├── Lab1-1190200208
├── .idea
│ ├── .gitignore
│ ├── misc.xml
│ ├── modules.xml
│ ├── vcs.xml
│ └── workspace.xml
├── .replit
├── Lab1-1190200208.iml
├── README.md
├── doc
│ └── Lab-1 1190200208 李旻翀.docx
├── lib
│ ├── hamcrest-core-1.3.jar
│ └── junit-4.12.jar
├── out
│ ├── production
│ │ └── Lab1-1190200208
│ │ │ ├── P1
│ │ │ └── MagicSquare.class
│ │ │ ├── P2
│ │ │ ├── .classpath
│ │ │ ├── .gitignore
│ │ │ ├── .project
│ │ │ ├── rules
│ │ │ │ ├── RulesOf6005.class
│ │ │ │ └── RulesOf6005Test.class
│ │ │ └── turtle
│ │ │ │ ├── Action$ActionType.class
│ │ │ │ ├── Action.class
│ │ │ │ ├── DrawableTurtle.class
│ │ │ │ ├── LineSegment.class
│ │ │ │ ├── PenColor.class
│ │ │ │ ├── Point.class
│ │ │ │ ├── Turtle.class
│ │ │ │ ├── TurtleGUI$1.class
│ │ │ │ ├── TurtleGUI$AnimationThread.class
│ │ │ │ ├── TurtleGUI.class
│ │ │ │ ├── TurtleSoup.class
│ │ │ │ └── TurtleSoupTest.class
│ │ │ └── P3
│ │ │ ├── FriendshipGraph.class
│ │ │ └── Person.class
│ └── test
│ │ └── Lab1-1190200208
│ │ └── P3
│ │ └── FriendshipGraphTest.class
├── src
│ ├── P1
│ │ ├── MagicSquare.java
│ │ └── txt
│ │ │ ├── 1.txt
│ │ │ ├── 2.txt
│ │ │ ├── 3.txt
│ │ │ ├── 4.txt
│ │ │ ├── 5.txt
│ │ │ └── 6.txt
│ ├── P2
│ │ ├── .classpath
│ │ ├── .gitignore
│ │ ├── .project
│ │ ├── rules
│ │ │ ├── RulesOf6005.java
│ │ │ └── RulesOf6005Test.java
│ │ └── turtle
│ │ │ ├── Action.java
│ │ │ ├── DrawableTurtle.java
│ │ │ ├── LineSegment.java
│ │ │ ├── PenColor.java
│ │ │ ├── Point.java
│ │ │ ├── Turtle.java
│ │ │ ├── TurtleGUI.java
│ │ │ ├── TurtleSoup.java
│ │ │ └── TurtleSoupTest.java
│ └── P3
│ │ ├── FriendshipGraph.java
│ │ └── Person.java
└── test
│ └── P3
│ └── FriendshipGraphTest.java
├── Lab2-1190200208
├── .idea
│ ├── .gitignore
│ ├── compiler.xml
│ ├── jarRepositories.xml
│ ├── libraries
│ │ └── hamcrest_all_1_3.xml
│ ├── misc.xml
│ ├── vcs.xml
│ └── workspace.xml
├── .replit
├── .travis.yml
├── Lab2-1190200208.iml
├── README.md
├── doc
│ └── Lab2-1190200208-Report.docx
├── lab2图片.pptx
├── lib
│ ├── hamcrest-all-1.3.jar
│ ├── hamcrest-core-1.3.jar
│ └── junit-4.12.jar
├── pom.xml
├── src
│ ├── P1
│ │ ├── .classpath
│ │ ├── .gitignore
│ │ ├── .project
│ │ ├── graph
│ │ │ ├── ConcreteEdgesGraph.java
│ │ │ ├── ConcreteVerticesGraph.java
│ │ │ └── Graph.java
│ │ └── poet
│ │ │ ├── GraphPoet.java
│ │ │ ├── Main.java
│ │ │ ├── Sonnet I to X.txt
│ │ │ ├── The Gettysburg Address.txt
│ │ │ ├── Where no man has gone before.txt
│ │ │ ├── hello goodbye.txt
│ │ │ └── mugar-omni-theater.txt
│ └── P2
│ │ ├── FriendshipGraph.java
│ │ └── Person.java
├── target
│ ├── classes
│ │ ├── P1
│ │ │ ├── .classpath
│ │ │ ├── .gitignore
│ │ │ ├── .project
│ │ │ ├── graph
│ │ │ │ ├── ConcreteEdgesGraph.class
│ │ │ │ ├── ConcreteVerticesGraph.class
│ │ │ │ ├── Edge.class
│ │ │ │ ├── Graph.class
│ │ │ │ └── Vertex.class
│ │ │ └── poet
│ │ │ │ ├── GraphPoet.class
│ │ │ │ ├── Main.class
│ │ │ │ ├── Sonnet I to X.txt
│ │ │ │ ├── The Gettysburg Address.txt
│ │ │ │ ├── Where no man has gone before.txt
│ │ │ │ ├── hello goodbye.txt
│ │ │ │ └── mugar-omni-theater.txt
│ │ └── P2
│ │ │ ├── FriendshipGraph.class
│ │ │ └── Person.class
│ └── test-classes
│ │ ├── P1
│ │ ├── graph
│ │ │ ├── ConcreteEdgesGraphTest.class
│ │ │ ├── ConcreteVerticesGraphTest.class
│ │ │ ├── GraphInstanceTest.class
│ │ │ └── GraphStaticTest.class
│ │ └── poet
│ │ │ └── GraphPoetTest.class
│ │ └── P2
│ │ └── FriendshipGraphTest.class
├── test
│ ├── P1
│ │ ├── graph
│ │ │ ├── ConcreteEdgesGraphTest.java
│ │ │ ├── ConcreteVerticesGraphTest.java
│ │ │ ├── GraphInstanceTest.java
│ │ │ └── GraphStaticTest.java
│ │ └── poet
│ │ │ └── GraphPoetTest.java
│ └── P2
│ │ └── FriendshipGraphTest.java
└── 习题课2:adt设计.pdf
├── Lab3-1190200208-change
└── change
│ ├── .github
│ └── workflows
│ │ └── maven.yml
│ ├── .idea
│ ├── .gitignore
│ ├── compiler.xml
│ ├── dataSources.local.xml
│ ├── inspectionProfiles
│ │ └── Project_Default.xml
│ ├── jarRepositories.xml
│ ├── misc.xml
│ ├── uiDesigner.xml
│ ├── vcs.xml
│ └── workspace.xml
│ ├── .replit
│ ├── README.md
│ ├── doc
│ └── Lab3-1190200208-Report.docx
│ ├── lib
│ ├── hamcrest-core-1.3.jar
│ └── junit-4.12.jar
│ ├── pom.xml
│ ├── src
│ ├── ADT
│ │ ├── Interval
│ │ │ ├── CommonIntervalSet.java
│ │ │ ├── IntervalSet.java
│ │ │ ├── IntervalSetDecorator.java
│ │ │ ├── NoBlankIntervalSet.java
│ │ │ └── NonOverlapIntervalSet.java
│ │ └── MultiInterval
│ │ │ ├── CommonMultiIntervalSet.java
│ │ │ ├── MultiIntervalSet.java
│ │ │ ├── MultiIntervalSetDecorator.java
│ │ │ ├── NoBlankMultiIntervalSet.java
│ │ │ ├── NonOverlapMultiIntervalSet.java
│ │ │ └── NonPeriodicMultiIntervalSet.java
│ ├── API
│ │ └── APIs.java
│ ├── SubADT
│ │ ├── CourseSchedule
│ │ │ ├── Course.java
│ │ │ ├── CourseIntervalSet.java
│ │ │ └── CourseScheduleApp.java
│ │ ├── DutyRoster
│ │ │ ├── DutyIntervalSet.java
│ │ │ ├── DutyRosterApp.java
│ │ │ ├── Employee.java
│ │ │ └── parserInput.java
│ │ └── ProcessSchedule
│ │ │ ├── Process.java
│ │ │ ├── ProcessIntervalSet.java
│ │ │ └── ProcessScheduleApp.java
│ └── txt
│ │ ├── test1.txt
│ │ ├── test2.txt
│ │ ├── test3.txt
│ │ ├── test4.txt
│ │ ├── test5.txt
│ │ ├── test6.txt
│ │ ├── test7.txt
│ │ └── test8.txt
│ ├── target
│ ├── classes
│ │ ├── ADT
│ │ │ ├── Interval
│ │ │ │ ├── CommonIntervalSet.class
│ │ │ │ ├── IntervalSet.class
│ │ │ │ ├── IntervalSetDecorator.class
│ │ │ │ ├── NoBlankIntervalSet.class
│ │ │ │ └── NonOverlapIntervalSet.class
│ │ │ └── MultiInterval
│ │ │ │ ├── CommonMultiIntervalSet.class
│ │ │ │ ├── MultiIntervalSet.class
│ │ │ │ ├── MultiIntervalSetDecorator.class
│ │ │ │ ├── NoBlankMultiIntervalSet.class
│ │ │ │ ├── NonOverlapMultiIntervalSet.class
│ │ │ │ └── NonPeriodicMultiIntervalSet.class
│ │ ├── API
│ │ │ └── APIs.class
│ │ ├── SubADT
│ │ │ ├── CourseSchedule
│ │ │ │ ├── Course.class
│ │ │ │ ├── CourseIntervalSet.class
│ │ │ │ └── CourseScheduleApp.class
│ │ │ ├── DutyRoster
│ │ │ │ ├── DutyIntervalSet.class
│ │ │ │ ├── DutyRosterApp.class
│ │ │ │ ├── Employee.class
│ │ │ │ └── parserInput.class
│ │ │ └── ProcessSchedule
│ │ │ │ ├── Process.class
│ │ │ │ ├── ProcessIntervalSet.class
│ │ │ │ └── ProcessScheduleApp.class
│ │ └── txt
│ │ │ ├── test1.txt
│ │ │ ├── test2.txt
│ │ │ ├── test3.txt
│ │ │ ├── test4.txt
│ │ │ ├── test5.txt
│ │ │ ├── test6.txt
│ │ │ ├── test7.txt
│ │ │ └── test8.txt
│ └── test-classes
│ │ ├── ADT
│ │ ├── Interval
│ │ │ ├── CommonIntervalSetTest.class
│ │ │ ├── IntervalSetInstanceTest.class
│ │ │ ├── IntervalSetStaticTest.class
│ │ │ ├── NoBlankIntervalSetTest.class
│ │ │ └── NonOverlapIntervalSetTest.class
│ │ └── MultiInterval
│ │ │ ├── MultiIntervalSetTest.class
│ │ │ ├── NoBlankMultiIntervalSetTest.class
│ │ │ ├── NonOverlapMultiIntervalSetTest.class
│ │ │ └── NonPeriodicMultiIntervalSetTest.class
│ │ ├── API
│ │ └── APIsTest.class
│ │ └── SubADT
│ │ ├── CourseSchedule
│ │ └── CourseIntervalSetTest.class
│ │ ├── DutyRoster
│ │ └── DutyIntervalSetTest.class
│ │ └── ProcessSchedule
│ │ └── ProcessIntervalSetTest.class
│ └── test
│ ├── ADT
│ ├── Interval
│ │ ├── CommonIntervalSetTest.java
│ │ ├── IntervalSetInstanceTest.java
│ │ ├── IntervalSetStaticTest.java
│ │ ├── NoBlankIntervalSetTest.java
│ │ └── NonOverlapIntervalSetTest.java
│ └── MultiInterval
│ │ ├── MultiIntervalSetTest.java
│ │ ├── NoBlankMultiIntervalSetTest.java
│ │ ├── NonOverlapMultiIntervalSetTest.java
│ │ └── NonPeriodicMultiIntervalSetTest.java
│ ├── API
│ └── APIsTest.java
│ └── SubADT
│ ├── CourseSchedule
│ └── CourseIntervalSetTest.java
│ ├── DutyRoster
│ └── DutyIntervalSetTest.java
│ └── ProcessSchedule
│ └── ProcessIntervalSetTest.java
├── Lab3-1190200208-origin
├── .github
│ └── workflows
│ │ └── maven.yml
├── .idea
│ ├── .gitignore
│ ├── compiler.xml
│ ├── dataSources.local.xml
│ ├── inspectionProfiles
│ │ └── Project_Default.xml
│ ├── jarRepositories.xml
│ ├── misc.xml
│ ├── uiDesigner.xml
│ ├── vcs.xml
│ └── workspace.xml
├── .replit
├── README.md
├── doc
│ └── Lab3-1190200208-Report.docx
├── pom.xml
├── src
│ ├── ADT
│ │ ├── Interval
│ │ │ ├── CommonIntervalSet.java
│ │ │ ├── IntervalSet.java
│ │ │ ├── IntervalSetDecorator.java
│ │ │ ├── NoBlankIntervalSet.java
│ │ │ └── NonOverlapIntervalSet.java
│ │ └── MultiInterval
│ │ │ ├── CommonMultiIntervalSet.java
│ │ │ ├── MultiIntervalSet.java
│ │ │ ├── MultiIntervalSetDecorator.java
│ │ │ ├── NoBlankMultiIntervalSet.java
│ │ │ ├── NonOverlapMultiIntervalSet.java
│ │ │ └── NonPeriodicMultiIntervalSet.java
│ ├── API
│ │ └── APIs.java
│ ├── SubADT
│ │ ├── CourseSchedule
│ │ │ ├── Course.java
│ │ │ ├── CourseIntervalSet.java
│ │ │ └── CourseScheduleApp.java
│ │ ├── DutyRoster
│ │ │ ├── DutyIntervalSet.java
│ │ │ ├── DutyRosterApp.java
│ │ │ ├── Employee.java
│ │ │ └── parserInput.java
│ │ └── ProcessSchedule
│ │ │ ├── Process.java
│ │ │ ├── ProcessIntervalSet.java
│ │ │ └── ProcessScheduleApp.java
│ └── txt
│ │ ├── test1.txt
│ │ ├── test2.txt
│ │ ├── test3.txt
│ │ ├── test4.txt
│ │ ├── test5.txt
│ │ ├── test6.txt
│ │ ├── test7.txt
│ │ └── test8.txt
├── target
│ ├── classes
│ │ ├── ADT
│ │ │ ├── Interval
│ │ │ │ ├── CommonIntervalSet.class
│ │ │ │ ├── IntervalSet.class
│ │ │ │ ├── IntervalSetDecorator.class
│ │ │ │ ├── NoBlankIntervalSet.class
│ │ │ │ └── NonOverlapIntervalSet.class
│ │ │ └── MultiInterval
│ │ │ │ ├── CommonMultiIntervalSet.class
│ │ │ │ ├── MultiIntervalSet.class
│ │ │ │ ├── MultiIntervalSetDecorator.class
│ │ │ │ ├── NoBlankMultiIntervalSet.class
│ │ │ │ ├── NonOverlapMultiIntervalSet.class
│ │ │ │ └── NonPeriodicMultiIntervalSet.class
│ │ ├── API
│ │ │ └── APIs.class
│ │ ├── SubADT
│ │ │ ├── CourseSchedule
│ │ │ │ ├── Course.class
│ │ │ │ ├── CourseIntervalSet.class
│ │ │ │ └── CourseScheduleApp.class
│ │ │ ├── DutyRoster
│ │ │ │ ├── DutyIntervalSet.class
│ │ │ │ ├── DutyRosterApp.class
│ │ │ │ ├── Employee.class
│ │ │ │ └── parserInput.class
│ │ │ └── ProcessSchedule
│ │ │ │ ├── Process.class
│ │ │ │ ├── ProcessIntervalSet.class
│ │ │ │ └── ProcessScheduleApp.class
│ │ └── txt
│ │ │ ├── test1.txt
│ │ │ ├── test2.txt
│ │ │ ├── test3.txt
│ │ │ ├── test4.txt
│ │ │ ├── test5.txt
│ │ │ ├── test6.txt
│ │ │ ├── test7.txt
│ │ │ └── test8.txt
│ └── test-classes
│ │ ├── ADT
│ │ ├── Interval
│ │ │ ├── CommonIntervalSetTest.class
│ │ │ ├── IntervalSetInstanceTest.class
│ │ │ ├── IntervalSetStaticTest.class
│ │ │ ├── NoBlankIntervalSetTest.class
│ │ │ └── NonOverlapIntervalSetTest.class
│ │ └── MultiInterval
│ │ │ ├── MultiIntervalSetTest.class
│ │ │ ├── NoBlankMultiIntervalSetTest.class
│ │ │ ├── NonOverlapMultiIntervalSetTest.class
│ │ │ └── NonPeriodicMultiIntervalSetTest.class
│ │ ├── API
│ │ └── APIsTest.class
│ │ └── SubADT
│ │ ├── CourseSchedule
│ │ └── CourseIntervalSetTest.class
│ │ ├── DutyRoster
│ │ └── DutyIntervalSetTest.class
│ │ └── ProcessSchedule
│ │ └── ProcessIntervalSetTest.class
└── test
│ ├── ADT
│ ├── Interval
│ │ ├── CommonIntervalSetTest.java
│ │ ├── IntervalSetInstanceTest.java
│ │ ├── IntervalSetStaticTest.java
│ │ ├── NoBlankIntervalSetTest.java
│ │ └── NonOverlapIntervalSetTest.java
│ └── MultiInterval
│ │ ├── MultiIntervalSetTest.java
│ │ ├── NoBlankMultiIntervalSetTest.java
│ │ ├── NonOverlapMultiIntervalSetTest.java
│ │ └── NonPeriodicMultiIntervalSetTest.java
│ ├── API
│ └── APIsTest.java
│ └── SubADT
│ ├── CourseSchedule
│ └── CourseIntervalSetTest.java
│ ├── DutyRoster
│ └── DutyIntervalSetTest.java
│ └── ProcessSchedule
│ └── ProcessIntervalSetTest.java
├── Lab3-1190200208
├── .github
│ └── workflows
│ │ └── maven.yml
├── .idea
│ ├── .gitignore
│ ├── compiler.xml
│ ├── dataSources.local.xml
│ ├── inspectionProfiles
│ │ └── Project_Default.xml
│ ├── jarRepositories.xml
│ ├── misc.xml
│ ├── shelf
│ │ ├── Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]
│ │ │ ├── Lab3-1190200208-Report.docx
│ │ │ ├── hamcrest-core-1.3.jar
│ │ │ ├── junit-4.12.jar
│ │ │ └── shelved.patch
│ │ └── Uncommitted_changes_before_Checkout_at_2021-07-03_20_57__Default_Changelist_.xml
│ ├── uiDesigner.xml
│ ├── vcs.xml
│ └── workspace.xml
├── .replit
├── README.md
├── doc
│ └── Lab3-1190200208-Report.docx
├── lib
│ ├── hamcrest-core-1.3.jar
│ └── junit-4.12.jar
├── pom.xml
├── src
│ ├── ADT
│ │ ├── Interval
│ │ │ ├── CommonIntervalSet.java
│ │ │ ├── IntervalSet.java
│ │ │ ├── IntervalSetDecorator.java
│ │ │ ├── NoBlankIntervalSet.java
│ │ │ └── NonOverlapIntervalSet.java
│ │ └── MultiInterval
│ │ │ ├── CommonMultiIntervalSet.java
│ │ │ ├── MultiIntervalSet.java
│ │ │ ├── MultiIntervalSetDecorator.java
│ │ │ ├── NoBlankMultiIntervalSet.java
│ │ │ ├── NonOverlapMultiIntervalSet.java
│ │ │ └── NonPeriodicMultiIntervalSet.java
│ ├── API
│ │ └── APIs.java
│ ├── SubADT
│ │ ├── CourseSchedule
│ │ │ ├── Course.java
│ │ │ ├── CourseIntervalSet.java
│ │ │ └── CourseScheduleApp.java
│ │ ├── DutyRoster
│ │ │ ├── DutyIntervalSet.java
│ │ │ ├── DutyRosterApp.java
│ │ │ ├── Employee.java
│ │ │ └── parserInput.java
│ │ └── ProcessSchedule
│ │ │ ├── Process.java
│ │ │ ├── ProcessIntervalSet.java
│ │ │ └── ProcessScheduleApp.java
│ └── txt
│ │ ├── test1.txt
│ │ ├── test2.txt
│ │ ├── test3.txt
│ │ ├── test4.txt
│ │ ├── test5.txt
│ │ ├── test6.txt
│ │ ├── test7.txt
│ │ └── test8.txt
├── target
│ ├── classes
│ │ ├── ADT
│ │ │ ├── Interval
│ │ │ │ ├── CommonIntervalSet.class
│ │ │ │ ├── IntervalSet.class
│ │ │ │ ├── IntervalSetDecorator.class
│ │ │ │ ├── NoBlankIntervalSet.class
│ │ │ │ └── NonOverlapIntervalSet.class
│ │ │ └── MultiInterval
│ │ │ │ ├── CommonMultiIntervalSet.class
│ │ │ │ ├── MultiIntervalSet.class
│ │ │ │ ├── MultiIntervalSetDecorator.class
│ │ │ │ ├── NoBlankMultiIntervalSet.class
│ │ │ │ ├── NonOverlapMultiIntervalSet.class
│ │ │ │ └── NonPeriodicMultiIntervalSet.class
│ │ ├── API
│ │ │ └── APIs.class
│ │ ├── SubADT
│ │ │ ├── CourseSchedule
│ │ │ │ ├── Course.class
│ │ │ │ ├── CourseIntervalSet.class
│ │ │ │ └── CourseScheduleApp.class
│ │ │ ├── DutyRoster
│ │ │ │ ├── DutyIntervalSet.class
│ │ │ │ ├── DutyRosterApp.class
│ │ │ │ ├── Employee.class
│ │ │ │ └── parserInput.class
│ │ │ └── ProcessSchedule
│ │ │ │ ├── Process.class
│ │ │ │ ├── ProcessIntervalSet.class
│ │ │ │ └── ProcessScheduleApp.class
│ │ └── txt
│ │ │ ├── test1.txt
│ │ │ ├── test2.txt
│ │ │ ├── test3.txt
│ │ │ ├── test4.txt
│ │ │ ├── test5.txt
│ │ │ ├── test6.txt
│ │ │ ├── test7.txt
│ │ │ └── test8.txt
│ └── test-classes
│ │ ├── ADT
│ │ ├── Interval
│ │ │ ├── CommonIntervalSetTest.class
│ │ │ ├── IntervalSetInstanceTest.class
│ │ │ ├── IntervalSetStaticTest.class
│ │ │ ├── NoBlankIntervalSetTest.class
│ │ │ └── NonOverlapIntervalSetTest.class
│ │ └── MultiInterval
│ │ │ ├── MultiIntervalSetTest.class
│ │ │ ├── NoBlankMultiIntervalSetTest.class
│ │ │ ├── NonOverlapMultiIntervalSetTest.class
│ │ │ └── NonPeriodicMultiIntervalSetTest.class
│ │ ├── API
│ │ └── APIsTest.class
│ │ └── SubADT
│ │ ├── CourseSchedule
│ │ └── CourseIntervalSetTest.class
│ │ ├── DutyRoster
│ │ └── DutyIntervalSetTest.class
│ │ └── ProcessSchedule
│ │ └── ProcessIntervalSetTest.class
└── test
│ ├── ADT
│ ├── Interval
│ │ ├── CommonIntervalSetTest.java
│ │ ├── IntervalSetInstanceTest.java
│ │ ├── IntervalSetStaticTest.java
│ │ ├── NoBlankIntervalSetTest.java
│ │ └── NonOverlapIntervalSetTest.java
│ └── MultiInterval
│ │ ├── MultiIntervalSetTest.java
│ │ ├── NoBlankMultiIntervalSetTest.java
│ │ ├── NonOverlapMultiIntervalSetTest.java
│ │ └── NonPeriodicMultiIntervalSetTest.java
│ ├── API
│ └── APIsTest.java
│ └── SubADT
│ ├── CourseSchedule
│ └── CourseIntervalSetTest.java
│ ├── DutyRoster
│ └── DutyIntervalSetTest.java
│ └── ProcessSchedule
│ └── ProcessIntervalSetTest.java
├── README.md
├── 习题课3可复用与可维护构造技术.pdf
├── 实验指导书
├── lab-0 lab guidelines.pdf
├── lab-1 fundamental java programming and testing.pdf
├── lab-2 adt and oop.pdf
└── lab-3 reusability and maintainability oriented programming v3.pdf
├── 往年考试题
├── 2018年春季期末考试题.pdf
├── 2019年春季期末考试题.pdf
└── 2020年春季期末考试题.pdf
└── 软构PPT
├── 1 views and quality objectives of software construction.pdf
├── 10 construction for change.pdf
├── 11 design patterns for reuse and maintainability.pdf
├── 12 construction for robustness and correctness.pdf
├── 2 testing and test-first programming.pdf
├── 3 software construction process and configuration management.pdf
├── 4 data type and type checking.pdf
├── 5 designing specification.pdf
├── 6 abstract data type (adt).pdf
├── 7 object-oriented programming (oop).pdf
├── 8 equality in adt and oop.pdf
└── 9 construction for reuse.pdf
/Lab1-1190200208/.idea/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/.idea/.gitignore
--------------------------------------------------------------------------------
/Lab1-1190200208/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Lab1-1190200208/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Lab1-1190200208/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Lab1-1190200208/.replit:
--------------------------------------------------------------------------------
1 | language = "java10"
--------------------------------------------------------------------------------
/Lab1-1190200208/Lab1-1190200208.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Lab1-1190200208/README.md:
--------------------------------------------------------------------------------
1 | [](https://classroom.github.com/online_ide?assignment_repo_id=4728528&assignment_repo_type=AssignmentRepo)
2 |
--------------------------------------------------------------------------------
/Lab1-1190200208/doc/Lab-1 1190200208 李旻翀.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/doc/Lab-1 1190200208 李旻翀.docx
--------------------------------------------------------------------------------
/Lab1-1190200208/lib/hamcrest-core-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/lib/hamcrest-core-1.3.jar
--------------------------------------------------------------------------------
/Lab1-1190200208/lib/junit-4.12.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/lib/junit-4.12.jar
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P1/MagicSquare.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P1/MagicSquare.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 |
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | P2
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/rules/RulesOf6005.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/rules/RulesOf6005.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/rules/RulesOf6005Test.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/rules/RulesOf6005Test.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Action$ActionType.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Action$ActionType.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Action.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Action.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/DrawableTurtle.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/DrawableTurtle.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/LineSegment.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/LineSegment.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/PenColor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/PenColor.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Point.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Point.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Turtle.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Turtle.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI$1.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI$AnimationThread.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI$AnimationThread.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleSoup.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleSoup.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleSoupTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleSoupTest.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P3/FriendshipGraph.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P3/FriendshipGraph.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/production/Lab1-1190200208/P3/Person.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P3/Person.class
--------------------------------------------------------------------------------
/Lab1-1190200208/out/test/Lab1-1190200208/P3/FriendshipGraphTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/test/Lab1-1190200208/P3/FriendshipGraphTest.class
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P1/txt/1.txt:
--------------------------------------------------------------------------------
1 | 37 78 29 70 21 62 13 54 5
2 | 6 38 79 30 71 22 63 14 46
3 | 47 7 39 80 31 72 23 55 15
4 | 16 48 8 40 81 32 64 24 56
5 | 57 17 49 9 41 73 33 65 25
6 | 26 58 18 50 1 42 74 34 66
7 | 67 27 59 10 51 2 43 75 35
8 | 36 68 19 60 11 52 3 44 76
9 | 77 28 69 20 61 12 53 4 45
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P1/txt/2.txt:
--------------------------------------------------------------------------------
1 | 8 58 59 5 4 62 63 1
2 | 49 15 14 52 53 11 10 56
3 | 41 23 22 44 45 19 18 48
4 | 32 34 35 29 28 38 39 25
5 | 40 26 27 37 36 30 31 33
6 | 17 47 46 20 21 43 42 24
7 | 9 55 54 12 13 51 50 16
8 | 64 2 3 61 60 6 7 57
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P1/txt/3.txt:
--------------------------------------------------------------------------------
1 | 233 256 279 302 325 348 371 394 417 440 1 24 47 70 93 116 139 162 185 208 231
2 | 255 278 301 324 347 370 393 416 439 21 23 46 69 92 115 138 161 184 207 230 232
3 | 277 300 323 346 369 392 415 438 20 22 45 68 91 114 137 160 183 206 229 252 254
4 | 299 322 345 368 391 414 437 19 42 44 67 90 113 136 159 182 205 228 251 253 276
5 | 321 344 367 390 413 436 18 41 43 66 89 112 135 158 181 204 227 250 273 275 298
6 | 343 366 389 412 435 17 40 63 65 88 111 134 157 180 203 226 249 272 274 297 320
7 | 365 388 411 434 16 39 62 64 87 110 133 156 179 202 225 248 271 294 296 319 342
8 | 387 410 433 15 38 61 84 86 109 132 155 178 201 224 247 270 293 295 318 341 364
9 | 409 432 14 37 60 83 85 108 131 154 177 200 223 246 269 292 315 317 340 363 386
10 | 431 13 36 59 82 105 107 130 153 176 199 222 245 268 291 314 316 339 362 385 408
11 | 12 35 58 81 104 106 129 152 175 198 221 244 267 290 313 336 338 361 384 407 430
12 | 34 57 80 103 126 128 151 174 197 220 243 266 289 312 335 337 360 383 406 429 11
13 | 56 79 102 125 127 150 173 196 219 242 265 288 311 334 357 359 382 405 428 10 33
14 | 78 101 124 147 149 172 195 218 241 264 287 310 333 356 358 381 404 427 9 32 55
15 | 100 123 146 148 171 194 217 240 263 286 309 332 355 378 380 403 426 8 31 54 77
16 | 122 145 168 170 193 216 239 262 285 308 331 354 377 379 402 425 7 30 53 76 99
17 | 144 167 169 192 215 238 261 284 307 330 353 376 399 401 424 6 29 52 75 98 121
18 | 166 189 191 214 237 260 283 306 329 352 375 398 400 423 5 28 51 74 97 120 143
19 | 188 190 213 236 259 282 305 328 351 374 397 422 4 27 50 73 96 119 142 165
20 | 210 212 235 258 281 304 327 350 373 396 419 421 3 26 49 72 95 118 141 164 187
21 | 211 234 257 280 303 326 349 372 395 418 441 2 25 48 71 94 117 140 163 186 209
22 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P1/txt/4.txt:
--------------------------------------------------------------------------------
1 | 30 39 48 1 10 19 28
2 | 38 47 7 9 18 27 29
3 | 46 6 8 17 26 -35 37
4 | 5 14 16 25 34 36 45
5 | 13 15 24 33 42 44 4
6 | 21 23 32 41 43 3.01 12
7 | 22 31 40 49.5 2 11 20
8 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P1/txt/6.txt:
--------------------------------------------------------------------------------
1 | 30 39 48 1 10 19 28
2 | 38 47 7 9 18 27 29
3 | 46 6 8 17 26 35 37
4 | 5 14 16 25 34 36 45
5 | 13 15 24 33 42 44 4
6 | 21 23 32 41 43 3 12
7 | 22 31 40 49 2 11 20
8 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/.gitignore:
--------------------------------------------------------------------------------
1 | /bin/
2 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | P2
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/rules/RulesOf6005Test.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P2.rules;
5 |
6 | import static org.junit.Assert.*;
7 |
8 | import org.junit.Test;
9 |
10 | /**
11 | * JUnit tests for RulesOf6005.
12 | */
13 | public class RulesOf6005Test {
14 |
15 | /**
16 | * Tests the mayUseCodeInAssignment method.
17 | */
18 | @Test
19 | public void testMayUseCodeInAssignment() {
20 | assertFalse("Expected false: un-cited publicly-available code",
21 | RulesOf6005.mayUseCodeInAssignment(false, true, false, false, false));
22 | assertTrue("Expected true: self-written required code",
23 | RulesOf6005.mayUseCodeInAssignment(true, false, true, true, true));
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/turtle/Action.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P2.turtle;
5 |
6 | /**
7 | * An immutable drawable turtle action.
8 | */
9 | public class Action {
10 |
11 | /**
12 | * Enumeration of turtle action types.
13 | */
14 | public enum ActionType {
15 | FORWARD, TURN, COLOR
16 | }
17 |
18 | private final ActionType type;
19 | private final String displayString;
20 | private final LineSegment lineSegment;
21 |
22 | /**
23 | * Represent a new action.
24 | * @param type type of action
25 | * @param displayString text that describes the action
26 | * @param lineSeg line segment associated with the action, may be null
27 | */
28 | public Action(ActionType type, String displayString, LineSegment lineSeg) {
29 | this.type = type;
30 | this.displayString = displayString;
31 | this.lineSegment = lineSeg;
32 | }
33 |
34 | /**
35 | * @return type of this action
36 | */
37 | public ActionType type() {
38 | return type;
39 | }
40 |
41 | @Override
42 | public String toString() {
43 | return displayString;
44 | }
45 |
46 | /**
47 | * @return line segment associated with this action, or null if none
48 | */
49 | public LineSegment lineSegment() {
50 | return lineSegment;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/turtle/LineSegment.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P2.turtle;
5 |
6 | /**
7 | * An immutable line segment in pixel space.
8 | */
9 | public class LineSegment {
10 |
11 | private final Point start;
12 | private final Point end;
13 | private final PenColor color;
14 |
15 | /**
16 | * Construct a line segment from coordinate pairs.
17 | *
18 | * @param startx x-coordinate of start point
19 | * @param starty y-coordinate of start point
20 | * @param endx x-coordinate of end point
21 | * @param endy y-coordinate of end point
22 | * @param color line segment color
23 | */
24 | public LineSegment(double startx, double starty, double endx, double endy, PenColor color) {
25 | this.start = new Point(startx, starty);
26 | this.end = new Point(endx, endy);
27 | this.color = color;
28 | }
29 |
30 | /**
31 | * Construct a line segment from start and end points.
32 | *
33 | * @param start one end of the line segment
34 | * @param end the other end of the line segment
35 | * @param color line segment color
36 | */
37 | public LineSegment(Point start, Point end, PenColor color) {
38 | this.start = start;
39 | this.end = end;
40 | this.color = color;
41 | }
42 |
43 | /**
44 | * @return starting point of the line segment
45 | */
46 | public Point start() {
47 | return start;
48 | }
49 |
50 | /**
51 | * @return ending point of the line segment
52 | */
53 | public Point end() {
54 | return end;
55 | }
56 |
57 | /**
58 | * @return color of the line segment
59 | */
60 | public PenColor color() {
61 | return color;
62 | }
63 |
64 | /**
65 | * Compute the length of this segment.
66 | *
67 | * @return the length of the line segment
68 | */
69 | public double length() {
70 | return Math.sqrt(Math.pow(this.start.x() - this.end.x(), 2.0)
71 | + Math.pow(this.start.y() - this.end.y(), 2.0));
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/turtle/PenColor.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P2.turtle;
5 |
6 | /**
7 | * Enumeration of turtle pen colors.
8 | *
9 | * You may not modify this enumeration.
10 | */
11 | public enum PenColor {
12 | BLACK,
13 | GRAY,
14 | RED,
15 | PINK,
16 | ORANGE,
17 | YELLOW,
18 | GREEN,
19 | CYAN,
20 | BLUE,
21 | MAGENTA;
22 | }
23 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/turtle/Point.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P2.turtle;
5 |
6 | /**
7 | * An immutable point in floating-point pixel space.
8 | */
9 | public class Point {
10 |
11 | private final double x;
12 | private final double y;
13 |
14 | /**
15 | * Construct a point at the given coordinates.
16 | * @param x x-coordinate
17 | * @param y y-coordinate
18 | */
19 | public Point(double x, double y) {
20 | this.x = x;
21 | this.y = y;
22 | }
23 |
24 | /**
25 | * @return x-coordinate of the point
26 | */
27 | public double x() {
28 | return x;
29 | }
30 |
31 | /**
32 | * @return y-coordinate of the point
33 | */
34 | public double y() {
35 | return y;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P2/turtle/Turtle.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P2.turtle;
5 |
6 | /**
7 | * Turtle interface.
8 | *
9 | * Defines the interface that any turtle must implement. Note that the
10 | * standard directions/rotations use Logo semantics: initial heading
11 | * of zero is 'up', and positive angles rotate the turtle clockwise.
12 | *
13 | * You may not modify this interface.
14 | */
15 | public interface Turtle {
16 |
17 | /**
18 | * Move the turtle forward a number of steps.
19 | *
20 | * @param units number of steps to move in the current direction; must be positive
21 | */
22 | public void forward(int units);
23 |
24 | /**
25 | * Change the turtle's heading by a number of degrees clockwise.
26 | *
27 | * @param degrees amount of change in angle, in degrees, with positive being clockwise
28 | */
29 | public void turn(double degrees);
30 |
31 | /**
32 | * Change the turtle's current pen color.
33 | *
34 | * @param color new pen color
35 | */
36 | public void color(PenColor color);
37 |
38 | /**
39 | * Draw the image created by this turtle.
40 | */
41 | public void draw();
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/Lab1-1190200208/src/P3/Person.java:
--------------------------------------------------------------------------------
1 | package P3;
2 |
3 | public class Person {
4 | private String name;
5 | private int index = -1;
6 |
7 | public Person(String name){
8 | this.name = name;
9 | }
10 |
11 | public String getName() {
12 | return name;
13 | }
14 |
15 | public int getIndex() {
16 | return index;
17 | }
18 |
19 | public void setIndex(int index) {
20 | this.index = index;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Lab2-1190200208/.idea/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/.idea/.gitignore
--------------------------------------------------------------------------------
/Lab2-1190200208/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Lab2-1190200208/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Lab2-1190200208/.idea/libraries/hamcrest_all_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Lab2-1190200208/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Lab2-1190200208/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Lab2-1190200208/.replit:
--------------------------------------------------------------------------------
1 | language = "java10"
--------------------------------------------------------------------------------
/Lab2-1190200208/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 | dist: trusty
3 | jdk:
4 | - oraclejdk8
--------------------------------------------------------------------------------
/Lab2-1190200208/Lab2-1190200208.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Lab2-1190200208/README.md:
--------------------------------------------------------------------------------
1 | [](https://classroom.github.com/online_ide?assignment_repo_id=4801685&assignment_repo_type=AssignmentRepo)
2 |
--------------------------------------------------------------------------------
/Lab2-1190200208/doc/Lab2-1190200208-Report.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/doc/Lab2-1190200208-Report.docx
--------------------------------------------------------------------------------
/Lab2-1190200208/lab2图片.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/lab2图片.pptx
--------------------------------------------------------------------------------
/Lab2-1190200208/lib/hamcrest-all-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/lib/hamcrest-all-1.3.jar
--------------------------------------------------------------------------------
/Lab2-1190200208/lib/hamcrest-core-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/lib/hamcrest-core-1.3.jar
--------------------------------------------------------------------------------
/Lab2-1190200208/lib/junit-4.12.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/lib/junit-4.12.jar
--------------------------------------------------------------------------------
/Lab2-1190200208/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.example
8 | Lab2-1190200208
9 | 1.0-SNAPSHOT
10 |
11 |
12 | junit
13 | junit
14 | 4.12
15 | test
16 |
17 |
18 |
19 |
20 | 14
21 | 14
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P1/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P1/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | bin
3 |
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P1/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ps2
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P1/poet/Main.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2015-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P1.poet;
5 |
6 | import java.io.File;
7 | import java.io.IOException;
8 |
9 | /**
10 | * Example program using GraphPoet.
11 | *
12 | *
PS2 instructions: you are free to change this example class.
13 | */
14 | public class Main {
15 |
16 | /**
17 | * Generate example poetry.
18 | *
19 | * @param args unused
20 | * @throws IOException if a poet corpus file cannot be found or read
21 | */
22 | public static void main(String[] args) throws IOException {
23 | final GraphPoet nimoy = new GraphPoet(new File("src/P1/poet/Sonnet I to X.txt"));
24 | final String input = "Love others, sweet too cruel.";
25 | System.out.println(input + "\n>>>\n" + nimoy.poem(input));
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P1/poet/The Gettysburg Address.txt:
--------------------------------------------------------------------------------
1 | Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.
2 |
3 | Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure.
4 |
5 | We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that nation might live.
6 |
7 | It is altogether fitting and proper that we should do this.
8 |
9 | But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground.
10 |
11 | The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract.
12 |
13 | The world will little note, nor long remember what we say here, but it can never forget what they did here.
14 |
15 | It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced.
16 |
17 | It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion
18 |
19 | that we here highly resolve that these dead shall not have died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from the earth.
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P1/poet/Where no man has gone before.txt:
--------------------------------------------------------------------------------
1 | To explore strange new worlds
2 | To seek out new life and new civilizations
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P1/poet/hello goodbye.txt:
--------------------------------------------------------------------------------
1 | hello, HelLo, HELLO, GoOdbyE!!!!!!
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P1/poet/mugar-omni-theater.txt:
--------------------------------------------------------------------------------
1 | This is a test of the Mugar Omni Theater sound system.
2 |
--------------------------------------------------------------------------------
/Lab2-1190200208/src/P2/Person.java:
--------------------------------------------------------------------------------
1 | package P2;
2 |
3 | import java.util.Objects;
4 |
5 | public class Person {
6 | private final String name;
7 |
8 | public Person(String name) {
9 | this.name = name;
10 | }
11 |
12 | public String getName() {
13 | return name;
14 | }
15 |
16 | @Override
17 | public boolean equals(Object o) {
18 | if (this == o) return true;
19 | if (o == null || getClass() != o.getClass()) return false;
20 | Person person = (Person) o;
21 | return Objects.equals(name, person.name);
22 | }
23 |
24 | @Override
25 | public int hashCode() {
26 | return Objects.hash(name);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | bin
3 |
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ps2
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/graph/ConcreteEdgesGraph.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/ConcreteEdgesGraph.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/graph/ConcreteVerticesGraph.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/ConcreteVerticesGraph.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/graph/Edge.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/Edge.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/graph/Graph.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/Graph.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/graph/Vertex.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/Vertex.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/poet/GraphPoet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/poet/GraphPoet.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/poet/Main.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/poet/Main.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/poet/The Gettysburg Address.txt:
--------------------------------------------------------------------------------
1 | Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.
2 |
3 | Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure.
4 |
5 | We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that nation might live.
6 |
7 | It is altogether fitting and proper that we should do this.
8 |
9 | But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground.
10 |
11 | The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract.
12 |
13 | The world will little note, nor long remember what we say here, but it can never forget what they did here.
14 |
15 | It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced.
16 |
17 | It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion
18 |
19 | that we here highly resolve that these dead shall not have died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from the earth.
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/poet/Where no man has gone before.txt:
--------------------------------------------------------------------------------
1 | To explore strange new worlds
2 | To seek out new life and new civilizations
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/poet/hello goodbye.txt:
--------------------------------------------------------------------------------
1 | hello, HelLo, HELLO, GoOdbyE!!!!!!
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P1/poet/mugar-omni-theater.txt:
--------------------------------------------------------------------------------
1 | This is a test of the Mugar Omni Theater sound system.
2 |
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P2/FriendshipGraph.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P2/FriendshipGraph.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/classes/P2/Person.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P2/Person.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/test-classes/P1/graph/ConcreteEdgesGraphTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/graph/ConcreteEdgesGraphTest.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/test-classes/P1/graph/ConcreteVerticesGraphTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/graph/ConcreteVerticesGraphTest.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/test-classes/P1/graph/GraphInstanceTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/graph/GraphInstanceTest.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/test-classes/P1/graph/GraphStaticTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/graph/GraphStaticTest.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/test-classes/P1/poet/GraphPoetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/poet/GraphPoetTest.class
--------------------------------------------------------------------------------
/Lab2-1190200208/target/test-classes/P2/FriendshipGraphTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P2/FriendshipGraphTest.class
--------------------------------------------------------------------------------
/Lab2-1190200208/test/P1/graph/ConcreteEdgesGraphTest.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2015-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P1.graph;
5 |
6 | import static org.junit.Assert.*;
7 |
8 | import org.junit.Test;
9 |
10 | /**
11 | * Tests for ConcreteEdgesGraph.
12 | *
13 | * This class runs the GraphInstanceTest tests against ConcreteEdgesGraph, as
14 | * well as tests for that particular implementation.
15 | *
16 | * Tests against the Graph spec should be in GraphInstanceTest.
17 | */
18 | public class ConcreteEdgesGraphTest extends GraphInstanceTest {
19 |
20 | /*
21 | * Provide a ConcreteEdgesGraph for tests in GraphInstanceTest.
22 | */
23 | @Override
24 | public Graph emptyInstance() {
25 | return new ConcreteEdgesGraph<>();
26 | }
27 |
28 | /*
29 | * Testing ConcreteEdgesGraph...
30 | */
31 |
32 | // Testing strategy for ConcreteEdgesGraph.toString()
33 | // 对三个点的情况进行测试,观察toString方法是否出错
34 |
35 | // tests for ConcreteEdgesGraph.toString()
36 | @Test
37 | public void testToString(){
38 | Graph graph =emptyInstance();
39 | graph.set("a", "b", 1);
40 | graph.set("b", "c", 2);
41 | graph.set("a", "c", 3);
42 |
43 | assertEquals("a->b (1)\n"+"b->c (2)\n"+"a->c (3)\n",graph.toString());
44 | }
45 |
46 | /*
47 | * Testing Edge...
48 | */
49 |
50 | // Testing strategy for Edge
51 | // 测试Edge中的三个不同方法:获取原点,获取终点,获取边权
52 |
53 | // tests for operations of Edge
54 |
55 | /* Testing strategy
56 | * 测试原点返回值
57 | */
58 | @Test
59 | public void testGetSource() {
60 | Edge e = new Edge<>("a", "b", 1);
61 | assertEquals("a", e.getSource());
62 | }
63 |
64 | /* Testing strategy
65 | * 测试终点返回值
66 | */
67 | @Test
68 | public void testGetTarget() {
69 | Edge e = new Edge<>("a", "b", 1);
70 | assertEquals("b", e.getTarget());
71 | }
72 |
73 | /* Testing strategy
74 | * 测试能否返回正确权重
75 | */
76 | @Test
77 | public void testGetWeight() {
78 | Edge e = new Edge<>("a", "b", 1);
79 | assertEquals(1, e.getWeight());
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/Lab2-1190200208/test/P1/graph/GraphStaticTest.java:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2015-2016 MIT 6.005 course staff, all rights reserved.
2 | * Redistribution of original or derived work requires permission of course staff.
3 | */
4 | package P1.graph;
5 |
6 | import static org.junit.Assert.*;
7 |
8 | import java.util.Collections;
9 |
10 | import org.junit.Test;
11 |
12 | /**
13 | * Tests for static methods of Graph.
14 | *
15 | * To facilitate testing multiple implementations of Graph, instance methods are
16 | * tested in GraphInstanceTest.
17 | */
18 | public class GraphStaticTest {
19 |
20 | // Testing strategy
21 | // empty()
22 | // no inputs, only output is empty graph
23 | // observe with vertices()
24 |
25 | @Test(expected = AssertionError.class)
26 | public void testAssertionsEnabled() {
27 | assert false; // make sure assertions are enabled with VM argument: -ea
28 | }
29 |
30 | @Test
31 | public void testEmptyVerticesEmpty() {
32 | assertEquals("expected empty() graph to have no vertices",
33 | Collections.emptySet(), Graph.empty().vertices());
34 | }
35 |
36 | // test other vertex label types in Problem 3.2
37 | @Test
38 | public void testDifferentDataLabel() {
39 | assertEquals("expected empty() graph to have no vertices",
40 | Collections.emptySet(), Graph.empty().vertices());
41 | assertEquals("expected empty() graph to have no vertices",
42 | Collections.emptySet(), Graph.empty().vertices());
43 | assertEquals("expected empty() graph to have no vertices",
44 | Collections.emptySet(), Graph.empty().vertices());
45 | assertEquals("expected empty() graph to have no vertices",
46 | Collections.emptySet(), Graph.empty().vertices());
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Lab2-1190200208/习题课2:adt设计.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/习题课2:adt设计.pdf
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
3 |
4 | name: Java CI with Maven
5 |
6 | on:
7 | push:
8 | branches: [ master ]
9 | pull_request:
10 | branches: [ master ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v2
19 | - name: Set up JDK 8
20 | uses: actions/setup-java@v2
21 | with:
22 | java-version: '8'
23 | distribution: 'adopt'
24 | - name: Build with Maven
25 | run: mvn -B package --file pom.xml
26 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.idea/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/.idea/.gitignore
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.idea/dataSources.local.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/.replit:
--------------------------------------------------------------------------------
1 | language = "java10"
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/README.md:
--------------------------------------------------------------------------------
1 | [](https://classroom.github.com/online_ide?assignment_repo_id=4889817&assignment_repo_type=AssignmentRepo)
2 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/doc/Lab3-1190200208-Report.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/doc/Lab3-1190200208-Report.docx
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/lib/hamcrest-core-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/lib/hamcrest-core-1.3.jar
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/lib/junit-4.12.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/lib/junit-4.12.jar
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.example
8 | Lab3-1190200208
9 | 1.0-SNAPSHOT
10 |
11 |
12 | junit
13 | junit
14 | 4.12
15 | test
16 |
17 |
18 |
19 |
20 | 14
21 | 14
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/Interval/IntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.Set;
4 |
5 | public interface IntervalSet {
6 |
7 | /**
8 | * 创建一个空的IntervalSet.
9 | *
10 | * @param L为IntervalSet标签的类型
11 | * @return 一个空的IntervalSet
12 | */
13 | public static IntervalSet empty() {
14 | return new CommonIntervalSet();
15 | }
16 |
17 | /**
18 | * 在当前的IntervalSet中插入新的时间段和标签
19 | *
20 | * @param start 时间段的起点
21 | * @param end 时间段的终点
22 | * @param label 时间段的标签
23 | */
24 | public void insert(long start, long end, L label);
25 |
26 | /**
27 | * 获得当前对象中的标签集合
28 | *
29 | * @return 当前对象中的标签集合
30 | */
31 | public Set labels();
32 |
33 | /**
34 | * 从当前IntervalSet中移除某个标签所关联的时间段
35 | *
36 | * @param label 所要移除时间段的对应标签
37 | * @return 移除成功返回true,移除失败返回false
38 | */
39 | public boolean remove(L label);
40 |
41 | /**
42 | * 返回某个标签对应的时间段的开始时间
43 | *
44 | * @param label 时间段对应的标签
45 | * @return 返回开始时间,若没找到标签对应的时间段,则返回-1
46 | */
47 | public long start(L label);
48 |
49 | /**
50 | * 返回某个标签对应的时间段的结束时间
51 | *
52 | * @param label 时间段对应的标签
53 | * @return 返回结束时间,若没找到标签对应的时间段,则返回-1
54 | */
55 | public long end(L label);
56 |
57 | /**
58 | * 判断该IntervalSet是否为空
59 | *
60 | * @return 为空返回true,不为空返回false
61 | */
62 | public boolean isEmpty();
63 |
64 | /**
65 | * 判断时间轴是否存在空白
66 | *
67 | * @return 若存在空白,返回true;否则返回false
68 | */
69 | public boolean checkBlank();
70 |
71 | /**
72 | * 判断是否存在不同的 interval 之间有重叠
73 | *
74 | * @return 若存在不同的 interval 之间有重叠,返回true;否则返回false
75 | */
76 | public boolean checkOverlap();
77 | }
78 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/Interval/IntervalSetDecorator.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.Set;
4 |
5 | public abstract class IntervalSetDecorator implements IntervalSet {
6 | protected final IntervalSet intervalSet;
7 |
8 | // Constructor
9 | public IntervalSetDecorator(IntervalSet intervalSet) {
10 | this.intervalSet = intervalSet;
11 | }
12 |
13 | @Override
14 | public void insert(long start, long end, L label) {
15 | intervalSet.insert(start, end, label);
16 | }
17 |
18 | @Override
19 | public Set labels() {
20 | return intervalSet.labels();
21 | }
22 |
23 | @Override
24 | public boolean remove(L label) {
25 | return intervalSet.remove(label);
26 | }
27 |
28 | @Override
29 | public long start(L label) {
30 | return intervalSet.start(label);
31 | }
32 |
33 | @Override
34 | public long end(L label) {
35 | return intervalSet.end(label);
36 | }
37 |
38 | @Override
39 | public boolean isEmpty() {
40 | return intervalSet.isEmpty();
41 | }
42 |
43 | @Override
44 | public boolean checkBlank() {
45 | return intervalSet.checkBlank();
46 | }
47 |
48 | @Override
49 | public boolean checkOverlap() {
50 | return intervalSet.checkOverlap();
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/Interval/NoBlankIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.HashMap;
4 | import java.util.IdentityHashMap;
5 | import java.util.Iterator;
6 | import java.util.Map;
7 |
8 | public class NoBlankIntervalSet extends IntervalSetDecorator implements IntervalSet {
9 |
10 | // Constructor
11 | public NoBlankIntervalSet(IntervalSet intervalSet) {
12 | super(intervalSet);
13 | }
14 |
15 | /*
16 | * 思路
17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
18 | * 2.从min到max,步长为1遍历每个键值对
19 | * 3.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false
20 | */
21 | public boolean checkBlank() {
22 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合
23 | Map map = new IdentityHashMap<>();
24 |
25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
26 | long min = Long.MAX_VALUE;
27 | long max = Long.MIN_VALUE;
28 | while (it.hasNext()) {
29 | L label = it.next();
30 | map.put(intervalSet.start(label), intervalSet.end(label));
31 | min = Math.min(intervalSet.start(label), min);
32 | max = Math.max(intervalSet.end(label), max);
33 | }
34 |
35 | //从min到max,步长为1遍历每个键值对
36 | for (long i = min; i < max; i++) {
37 | boolean flag = false;
38 | for (Map.Entry entry : map.entrySet()) {
39 | if (i >= entry.getKey() && i <= entry.getValue()) {
40 | flag = true;
41 | break;
42 | }
43 | }
44 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中
45 | }
46 | return false;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/Interval/NonOverlapIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.HashMap;
4 | import java.util.IdentityHashMap;
5 | import java.util.Iterator;
6 | import java.util.Map;
7 |
8 | public class NonOverlapIntervalSet extends IntervalSetDecorator implements IntervalSet {
9 |
10 | // Constructor
11 | public NonOverlapIntervalSet(IntervalSet intervalSet) {
12 | super(intervalSet);
13 | }
14 |
15 | /*
16 | * 思路
17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
18 | * 2.从min到max,步长为1遍历每个键值对
19 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠
20 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
21 | */
22 | public boolean checkOverlap() {
23 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合
24 | Map map = new IdentityHashMap<>(); // 保存每个时间轴的起点与终点
25 |
26 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
27 | long min = Long.MAX_VALUE;
28 | long max = Long.MIN_VALUE;
29 | while (it.hasNext()) {
30 | L label = it.next();
31 | map.put(intervalSet.start(label), intervalSet.end(label));
32 | min = Math.min(intervalSet.start(label), min);
33 | max = Math.max(intervalSet.end(label), max);
34 | }
35 |
36 | // 从min到max,步长为1遍历每个键值对
37 | for (long i = min; i <= max; i++) {
38 | boolean flag1 = false, flag2 = false;
39 | for (Map.Entry entry : map.entrySet()) {
40 | if (i >= entry.getKey() && i <= entry.getValue()) {
41 | if (!flag1)
42 | flag1 = true;
43 | else {
44 | flag2 = true;
45 | break;
46 | }
47 | }
48 | }
49 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠
50 | }
51 |
52 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/MultiInterval/MultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.Set;
6 |
7 | public interface MultiIntervalSet {
8 |
9 | /**
10 | * 创建一个空的MultiIntervalSet.
11 | *
12 | * @param L为MultiIntervalSet标签的类型
13 | * @return 一个空的MultiIntervalSet
14 | */
15 | public static MultiIntervalSet empty() {
16 | return new CommonMultiIntervalSet();
17 | }
18 |
19 | /**
20 | * 判断该MultiIntervalSet是否为空
21 | *
22 | * @return 为空返回true,不为空返回false
23 | */
24 | public boolean isEmpty();
25 |
26 | /**
27 | * 在当前的multiIntervalSet中插入新的时间段和标签
28 | *
29 | * @param start 时间段的起点
30 | * @param end 时间段的终点
31 | * @param label 时间段的标签
32 | */
33 | public void insert(long start, long end, L label);
34 |
35 | /**
36 | * 获得当前对象中的标签集合
37 | *
38 | * @return 当前对象中的标签集合
39 | */
40 | public Set labels();
41 |
42 | /**
43 | * 从当前MultiIntervalSet中移除某个标签所关联的所有时间段
44 | *
45 | * @param label 所要移除时间段的对应标签
46 | * @return 移除成功返回true,移除失败返回false
47 | */
48 | public boolean remove(L label);
49 |
50 | /**
51 | * 从当前对象中获取与某个标签所关联的所有时间段
52 | *
53 | * @param label 所要获取具体信息的时间段的对应标签
54 | * @return 返回IntervalSet,其中的时间段按开始时间从小到大的次序排列
55 | */
56 | public IntervalSet intervals(L label);
57 |
58 | /**
59 | * 判断时间轴是否允许空白
60 | *
61 | * @return 若存在空白,返回true;否则返回false
62 | */
63 | public boolean checkBlank();
64 |
65 | /**
66 | * 判断是否允许不同的 multiInterval 之间有重叠
67 | *
68 | * @return 若允许不同的 multiInterval 之间有重叠,返回true;否则返回false
69 | */
70 | public boolean checkOverlap();
71 |
72 | /**
73 | * 是否包含周期性的时间段
74 | *
75 | * @return 若包含周期性的时间段,则返回true;否则返回false
76 | */
77 | public boolean checkPeriodic();
78 |
79 | /**
80 | * 从当前MultiIntervalSet中移除某个标签所关联的特定时间段
81 | *
82 | * @param label 所要移除时间段的对应标签
83 | * @param start 所要移除时间段的起点
84 | * @return 移除成功返回true,移除失败返回false
85 | */
86 | public boolean removeSpecific(L label, long start);
87 | }
88 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/MultiInterval/MultiIntervalSetDecorator.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.Set;
6 |
7 | public abstract class MultiIntervalSetDecorator implements MultiIntervalSet {
8 | protected final MultiIntervalSet multiIntervalSet;
9 |
10 | // Constructor
11 | protected MultiIntervalSetDecorator(MultiIntervalSet multiIntervalSet) {
12 | this.multiIntervalSet = multiIntervalSet;
13 | }
14 |
15 | @Override
16 | public boolean isEmpty() {
17 | return multiIntervalSet.isEmpty();
18 | }
19 |
20 | @Override
21 | public void insert(long start, long end, L label) {
22 | multiIntervalSet.insert(start,end,label);
23 | }
24 |
25 | @Override
26 | public Set labels() {
27 | return multiIntervalSet.labels();
28 | }
29 |
30 | @Override
31 | public boolean remove(L label) {
32 | return multiIntervalSet.remove(label);
33 | }
34 |
35 | @Override
36 | public IntervalSet intervals(L label) {
37 | return multiIntervalSet.intervals(label);
38 | }
39 |
40 | @Override
41 | public boolean checkBlank() {
42 | return multiIntervalSet.checkBlank();
43 | }
44 |
45 | @Override
46 | public boolean checkOverlap() {
47 | return multiIntervalSet.checkOverlap();
48 | }
49 |
50 | @Override
51 | public boolean checkPeriodic() {
52 | return multiIntervalSet.checkPeriodic();
53 | }
54 |
55 | @Override
56 | public boolean removeSpecific(L label, long start) {
57 | return multiIntervalSet.removeSpecific(label,start);
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/MultiInterval/NoBlankMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.HashMap;
6 | import java.util.IdentityHashMap;
7 | import java.util.Iterator;
8 | import java.util.Map;
9 |
10 | public class NoBlankMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
11 |
12 | // Constructor
13 | public NoBlankMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
14 | super(multiIntervalSet);
15 | }
16 |
17 | /*
18 | * 思路
19 | * 1.找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
20 | * 3.从min到max,步长为1遍历每个键值对
21 | * 4.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false
22 | */
23 | public boolean checkBlank() {
24 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合
25 | Map map = new IdentityHashMap<>();
26 |
27 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
28 | long min = Long.MAX_VALUE;
29 | long max = Long.MIN_VALUE;
30 | while (it.hasNext()) {
31 | L label = it.next();
32 | IntervalSet temp = multiIntervalSet.intervals(label);
33 | for (Integer tempLabel : temp.labels()) {
34 | map.put(temp.start(tempLabel), temp.end(tempLabel));
35 | min = Math.min(temp.start(tempLabel), min);
36 | max = Math.max(temp.end(tempLabel), max);
37 | }
38 | }
39 |
40 | //从min到max,步长为1遍历每个键值对
41 | for (long i = min; i < max; i++) {
42 | boolean flag = false;
43 | for (Map.Entry entry : map.entrySet()) {
44 | if (i >= entry.getKey() && i <= entry.getValue()) {
45 | flag = true;
46 | break;
47 | }
48 | }
49 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中
50 | }
51 | return false;
52 |
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/MultiInterval/NonOverlapMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.*;
6 |
7 | public class NonOverlapMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
8 |
9 | // Constructor
10 | public NonOverlapMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
11 | super(multiIntervalSet);
12 | }
13 |
14 | /*
15 | * 思路
16 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
17 | * 2.从min到max,步长为1遍历每个键值对
18 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠
19 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
20 | */
21 | public boolean checkOverlap() {
22 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合
23 | List> map = new ArrayList<>();
24 |
25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
26 | long min = Long.MAX_VALUE;
27 | long max = Long.MIN_VALUE;
28 | while (it.hasNext()) {
29 | L label = it.next();
30 | IntervalSet temp = multiIntervalSet.intervals(label);
31 | for (Integer tempLabel : temp.labels()) {
32 | List subList = new ArrayList<>();
33 | subList.add(temp.start(tempLabel));
34 | subList.add(temp.end(tempLabel));
35 | map.add(subList);
36 | min = Math.min(temp.start(tempLabel), min);
37 | max = Math.max(temp.end(tempLabel), max);
38 | }
39 | }
40 |
41 | // 从min到max,步长为1遍历每个键值对
42 | for (long i = min; i <= max; i++) {
43 | boolean flag1 = false, flag2 = false;
44 | Iterator> it2 = map.iterator();
45 | while (it2.hasNext()) {
46 | List entry = it2.next();
47 | if (i >= entry.get(0) && i <= entry.get(1)) {
48 | if (!flag1)
49 | flag1 = true;
50 | else {
51 | flag2 = true;
52 | break;
53 | }
54 | }
55 | }
56 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠
57 | }
58 |
59 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/ADT/MultiInterval/NonPeriodicMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | public class NonPeriodicMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
4 |
5 | // Constructor
6 | public NonPeriodicMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
7 | super(multiIntervalSet);
8 | }
9 |
10 | public boolean checkPeriodic() {
11 | return false;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/SubADT/CourseSchedule/Course.java:
--------------------------------------------------------------------------------
1 | package SubADT.CourseSchedule;
2 |
3 | import java.util.Objects;
4 |
5 | public class Course {
6 | private final String ID;
7 | private final String name;
8 | private final String teacher;
9 | private final String location;
10 | private final int weekHour;
11 |
12 | public Course(String ID, String name, String teacher, String location, int weekHour) {
13 | this.ID = ID; // 课程ID
14 | this.name = name; // 课程名称
15 | this.teacher = teacher; // 授课老师
16 | this.location = location; // 上课地点
17 | this.weekHour = weekHour; // 周最大学时数
18 | }
19 |
20 | public String getID() {
21 | return ID;
22 | }
23 |
24 | public String getName() {
25 | return name;
26 | }
27 |
28 | public String getTeacher() {
29 | return teacher;
30 | }
31 |
32 | public String getLocation() {
33 | return location;
34 | }
35 |
36 | public int getWeekHour() { return weekHour; }
37 |
38 | @Override
39 | public boolean equals(Object o) {
40 | if (this == o) return true;
41 | if (o == null || getClass() != o.getClass()) return false;
42 | Course course = (Course) o;
43 | return Objects.equals(ID, course.ID);
44 | }
45 |
46 | @Override
47 | public int hashCode() {
48 | return Objects.hash(ID);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/SubADT/DutyRoster/Employee.java:
--------------------------------------------------------------------------------
1 | package SubADT.DutyRoster;
2 |
3 | import java.util.Objects;
4 |
5 | public class Employee {
6 | private final String name; // 姓名
7 | private final String duty; // 职务
8 | private final String phone;// 电话
9 |
10 | public Employee(String name, String duty, String phone) {
11 | this.name = name;
12 | this.duty = duty;
13 | this.phone = phone;
14 | }
15 |
16 | public String getName() {
17 | return name;
18 | }
19 |
20 | public String getDuty() {
21 | return duty;
22 | }
23 |
24 | public String getPhone() {
25 | return phone;
26 | }
27 |
28 | @Override
29 | public boolean equals(Object o) {
30 | if (this == o) return true;
31 | if (o == null || getClass() != o.getClass()) return false;
32 | Employee employee = (Employee) o;
33 | return Objects.equals(name, employee.name);
34 | }
35 |
36 | @Override
37 | public int hashCode() {
38 | return Objects.hash(name);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/SubADT/ProcessSchedule/Process.java:
--------------------------------------------------------------------------------
1 | package SubADT.ProcessSchedule;
2 |
3 | import java.util.Objects;
4 |
5 | public class Process {
6 | private final long ID; // 进程ID
7 | private final String name; // 进程名称
8 | private final long minTime; // 最短执行时间
9 | private final long maxTime; // 最长执行时间
10 |
11 | public Process(long ID, String name, long minTime, long maxTime) {
12 | this.ID = ID;
13 | this.name = name;
14 | this.minTime = minTime;
15 | this.maxTime = maxTime;
16 | }
17 |
18 | public long getID() {
19 | return ID;
20 | }
21 |
22 | public String getName() {
23 | return name;
24 | }
25 |
26 | public long getMinTime() {
27 | return minTime;
28 | }
29 |
30 | public long getMaxTime() {
31 | return maxTime;
32 | }
33 |
34 | @Override
35 | public boolean equals(Object o) {
36 | if (this == o) return true;
37 | if (o == null || getClass() != o.getClass()) return false;
38 | Process process = (Process) o;
39 | return ID == process.ID;
40 | }
41 |
42 | @Override
43 | public int hashCode() {
44 | return Objects.hash(ID);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/txt/test1.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test1.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/txt/test2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test2.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/txt/test3.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test3.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/txt/test4.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test4.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/txt/test5.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test5.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/txt/test6.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test6.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/txt/test7.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test7.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/src/txt/test8.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test8.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/Interval/CommonIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/CommonIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/Interval/IntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/IntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/Interval/IntervalSetDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/IntervalSetDecorator.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/Interval/NoBlankIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/NoBlankIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/Interval/NonOverlapIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/NonOverlapIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/MultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/MultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/API/APIs.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/API/APIs.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/Course.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/Course.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/DutyIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/DutyIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/DutyRosterApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/DutyRosterApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/Employee.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/Employee.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/parserInput.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/parserInput.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/Process.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/Process.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/txt/test1.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test1.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/txt/test2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test2.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/txt/test3.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test3.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/txt/test4.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test4.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/txt/test5.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test5.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/txt/test6.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test6.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/txt/test7.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test7.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/classes/txt/test8.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test8.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/CommonIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/CommonIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/IntervalSetStaticTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/IntervalSetStaticTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/API/APIsTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/API/APIsTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/test/ADT/Interval/CommonIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | public class CommonIntervalSetTest extends IntervalSetInstanceTest{
4 |
5 | /*
6 | * Provide a commonIntervalSet for tests in IntervalInstanceTest.
7 | */
8 | @Override
9 | public IntervalSet emptyInstance() {
10 | return new CommonIntervalSet<>();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/test/ADT/Interval/IntervalSetStaticTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import java.util.Collections;
6 |
7 | import static org.junit.Assert.assertEquals;
8 |
9 | public class IntervalSetStaticTest {
10 | @Test(expected = AssertionError.class)
11 | public void testAssertionsEnabled() {
12 | assert false; // make sure assertions are enabled with VM argument: -ea
13 | }
14 |
15 | @Test
16 | public void testEmptyVerticesEmpty() {
17 | assertEquals("expected empty() IntervalSet to have no labels",
18 | Collections.emptySet(), IntervalSet.empty().labels());
19 | }
20 |
21 | // test other label types
22 | @Test
23 | public void testDifferentDataLabel() {
24 | assertEquals("expected empty() IntervalSet to have no labels",
25 | Collections.emptySet(), IntervalSet.empty().labels());
26 | assertEquals("expected empty() IntervalSet to have no labels",
27 | Collections.emptySet(), IntervalSet.empty().labels());
28 | assertEquals("expected empty() IntervalSet to have no labels",
29 | Collections.emptySet(), IntervalSet.empty().labels());
30 | assertEquals("expected empty() IntervalSet to have no labels",
31 | Collections.emptySet(), IntervalSet.empty().labels());
32 | assertEquals("expected empty() IntervalSet to have no labels",
33 | Collections.emptySet(), IntervalSet.empty().labels());
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/test/ADT/Interval/NoBlankIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | public class NoBlankIntervalSetTest {
8 |
9 | /**
10 | * Tests that assertions are enabled.
11 | */
12 | @Test(expected = AssertionError.class)
13 | public void testAssertionsEnabled() {
14 | assert false;
15 | }
16 |
17 | @Test
18 | // 测试时间轴有空白的情况
19 | public void testCheckBlank1(){
20 | IntervalSet intervalSet = new CommonIntervalSet<>();
21 |
22 | intervalSet.insert(1,3,"a");
23 | intervalSet.insert(2,4,"b");
24 | intervalSet.insert(6,7,"c");
25 |
26 | assertTrue(intervalSet.checkBlank());
27 | }
28 |
29 | @Test
30 | // 测试时间轴无空白的情况
31 | public void testCheckBlank2(){
32 | IntervalSet intervalSet = new CommonIntervalSet<>();
33 |
34 | intervalSet.insert(10,200,"a");
35 | intervalSet.insert(200,300,"b");
36 | intervalSet.insert(20,50,"c");
37 | intervalSet.insert(250,400,"d");
38 |
39 | assertFalse(intervalSet.checkBlank());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/test/ADT/Interval/NonOverlapIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NonOverlapIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试允许重叠的情况
20 | public void testCheckOverlap1(){
21 | IntervalSet intervalSet = new CommonIntervalSet<>();
22 |
23 | intervalSet.insert(10,200,"a");
24 | intervalSet.insert(20,300,"b");
25 | intervalSet.insert(400,500,"c");
26 |
27 | assertTrue(intervalSet.checkOverlap());
28 | }
29 |
30 | @Test
31 | // 测试不允许重叠的情况
32 | public void testCheckOverlap2(){
33 | IntervalSet intervalSet = new CommonIntervalSet<>();
34 |
35 | intervalSet.insert(10,200,"a");
36 | intervalSet.insert(201,300,"b");
37 | intervalSet.insert(400,500,"c");
38 |
39 | assertFalse(intervalSet.checkOverlap());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/test/ADT/MultiInterval/NoBlankMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NoBlankMultiIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试时间轴有空白的情况
20 | public void testCheckBlank1(){
21 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>();
22 |
23 | multiIntervalSet.insert(1,3,"a");
24 | multiIntervalSet.insert(2,4,"a");
25 | multiIntervalSet.insert(6,7,"a");
26 |
27 | assertTrue(multiIntervalSet.checkBlank());
28 | }
29 |
30 | @Test
31 | // 测试时间轴无空白的情况
32 | public void testCheckBlank2(){
33 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>();
34 |
35 | multiIntervalSet.insert(10,200,"a");
36 | multiIntervalSet.insert(200,300,"a");
37 | multiIntervalSet.insert(20,50,"b");
38 | multiIntervalSet.insert(250,400,"b");
39 |
40 | assertFalse(multiIntervalSet.checkBlank());
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/test/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NonOverlapMultiIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试允许重叠的情况
20 | public void testCheckOverlap1(){
21 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>();
22 |
23 | MultiIntervalSet.insert(10,200,"a");
24 | MultiIntervalSet.insert(20,300,"a");
25 | MultiIntervalSet.insert(400,500,"a");
26 |
27 | assertTrue(MultiIntervalSet.checkOverlap());
28 | }
29 |
30 | @Test
31 | // 测试不允许重叠的情况
32 | public void testCheckOverlap2(){
33 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>();
34 |
35 | MultiIntervalSet.insert(10,200,"a");
36 | MultiIntervalSet.insert(201,300,"a");
37 | MultiIntervalSet.insert(400,500,"a");
38 |
39 | assertFalse(MultiIntervalSet.checkOverlap());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208-change/change/test/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | public class NonPeriodicMultiIntervalSetTest {
6 |
7 | /**
8 | * Tests that assertions are enabled.
9 | */
10 | @Test(expected = AssertionError.class)
11 | public void testAssertionsEnabled() {
12 | assert false;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
3 |
4 | name: Java CI with Maven
5 |
6 | on:
7 | push:
8 | branches: [ master ]
9 | pull_request:
10 | branches: [ master ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v2
19 | - name: Set up JDK 8
20 | uses: actions/setup-java@v2
21 | with:
22 | java-version: '8'
23 | distribution: 'adopt'
24 | - name: Build with Maven
25 | run: mvn -B package --file pom.xml
26 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.idea/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/.idea/.gitignore
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.idea/dataSources.local.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/.replit:
--------------------------------------------------------------------------------
1 | language = "java10"
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/README.md:
--------------------------------------------------------------------------------
1 | [](https://classroom.github.com/online_ide?assignment_repo_id=4889817&assignment_repo_type=AssignmentRepo)
2 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/doc/Lab3-1190200208-Report.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/doc/Lab3-1190200208-Report.docx
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.example
8 | Lab3-1190200208
9 | 1.0-SNAPSHOT
10 |
11 |
12 | junit
13 | junit
14 | 4.12
15 | test
16 |
17 |
18 |
19 |
20 | 14
21 | 14
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/Interval/IntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.Set;
4 |
5 | public interface IntervalSet {
6 |
7 | /**
8 | * 创建一个空的IntervalSet.
9 | *
10 | * @param L为IntervalSet标签的类型
11 | * @return 一个空的IntervalSet
12 | */
13 | public static IntervalSet empty() {
14 | return new CommonIntervalSet();
15 | }
16 |
17 | /**
18 | * 在当前的IntervalSet中插入新的时间段和标签
19 | *
20 | * @param start 时间段的起点
21 | * @param end 时间段的终点
22 | * @param label 时间段的标签
23 | */
24 | public void insert(long start, long end, L label);
25 |
26 | /**
27 | * 获得当前对象中的标签集合
28 | *
29 | * @return 当前对象中的标签集合
30 | */
31 | public Set labels();
32 |
33 | /**
34 | * 从当前IntervalSet中移除某个标签所关联的时间段
35 | *
36 | * @param label 所要移除时间段的对应标签
37 | * @return 移除成功返回true,移除失败返回false
38 | */
39 | public boolean remove(L label);
40 |
41 | /**
42 | * 返回某个标签对应的时间段的开始时间
43 | *
44 | * @param label 时间段对应的标签
45 | * @return 返回开始时间,若没找到标签对应的时间段,则返回-1
46 | */
47 | public long start(L label);
48 |
49 | /**
50 | * 返回某个标签对应的时间段的结束时间
51 | *
52 | * @param label 时间段对应的标签
53 | * @return 返回结束时间,若没找到标签对应的时间段,则返回-1
54 | */
55 | public long end(L label);
56 |
57 | /**
58 | * 判断该IntervalSet是否为空
59 | *
60 | * @return 为空返回true,不为空返回false
61 | */
62 | public boolean isEmpty();
63 |
64 | /**
65 | * 判断时间轴是否存在空白
66 | *
67 | * @return 若存在空白,返回true;否则返回false
68 | */
69 | public boolean checkBlank();
70 |
71 | /**
72 | * 判断是否存在不同的 interval 之间有重叠
73 | *
74 | * @return 若存在不同的 interval 之间有重叠,返回true;否则返回false
75 | */
76 | public boolean checkOverlap();
77 | }
78 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/Interval/IntervalSetDecorator.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.Set;
4 |
5 | public abstract class IntervalSetDecorator implements IntervalSet {
6 | protected final IntervalSet intervalSet;
7 |
8 | // Constructor
9 | public IntervalSetDecorator(IntervalSet intervalSet) {
10 | this.intervalSet = intervalSet;
11 | }
12 |
13 | @Override
14 | public void insert(long start, long end, L label) {
15 | intervalSet.insert(start, end, label);
16 | }
17 |
18 | @Override
19 | public Set labels() {
20 | return intervalSet.labels();
21 | }
22 |
23 | @Override
24 | public boolean remove(L label) {
25 | return intervalSet.remove(label);
26 | }
27 |
28 | @Override
29 | public long start(L label) {
30 | return intervalSet.start(label);
31 | }
32 |
33 | @Override
34 | public long end(L label) {
35 | return intervalSet.end(label);
36 | }
37 |
38 | @Override
39 | public boolean isEmpty() {
40 | return intervalSet.isEmpty();
41 | }
42 |
43 | @Override
44 | public boolean checkBlank() {
45 | return intervalSet.checkBlank();
46 | }
47 |
48 | @Override
49 | public boolean checkOverlap() {
50 | return intervalSet.checkOverlap();
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/Interval/NoBlankIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.HashMap;
4 | import java.util.IdentityHashMap;
5 | import java.util.Iterator;
6 | import java.util.Map;
7 |
8 | public class NoBlankIntervalSet extends IntervalSetDecorator implements IntervalSet {
9 |
10 | // Constructor
11 | public NoBlankIntervalSet(IntervalSet intervalSet) {
12 | super(intervalSet);
13 | }
14 |
15 | /*
16 | * 思路
17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
18 | * 2.从min到max,步长为1遍历每个键值对
19 | * 3.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false
20 | */
21 | public boolean checkBlank() {
22 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合
23 | Map map = new IdentityHashMap<>();
24 |
25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
26 | long min = Long.MAX_VALUE;
27 | long max = Long.MIN_VALUE;
28 | while (it.hasNext()) {
29 | L label = it.next();
30 | map.put(intervalSet.start(label), intervalSet.end(label));
31 | min = Math.min(intervalSet.start(label), min);
32 | max = Math.max(intervalSet.end(label), max);
33 | }
34 |
35 | //从min到max,步长为1遍历每个键值对
36 | for (long i = min; i < max; i++) {
37 | boolean flag = false;
38 | for (Map.Entry entry : map.entrySet()) {
39 | if (i >= entry.getKey() && i <= entry.getValue()) {
40 | flag = true;
41 | break;
42 | }
43 | }
44 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中
45 | }
46 | return false;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/Interval/NonOverlapIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.HashMap;
4 | import java.util.IdentityHashMap;
5 | import java.util.Iterator;
6 | import java.util.Map;
7 |
8 | public class NonOverlapIntervalSet extends IntervalSetDecorator implements IntervalSet {
9 |
10 | // Constructor
11 | public NonOverlapIntervalSet(IntervalSet intervalSet) {
12 | super(intervalSet);
13 | }
14 |
15 | /*
16 | * 思路
17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
18 | * 2.从min到max,步长为1遍历每个键值对
19 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠
20 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
21 | */
22 | public boolean checkOverlap() {
23 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合
24 | Map map = new IdentityHashMap<>(); // 保存每个时间轴的起点与终点
25 |
26 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
27 | long min = Long.MAX_VALUE;
28 | long max = Long.MIN_VALUE;
29 | while (it.hasNext()) {
30 | L label = it.next();
31 | map.put(intervalSet.start(label), intervalSet.end(label));
32 | min = Math.min(intervalSet.start(label), min);
33 | max = Math.max(intervalSet.end(label), max);
34 | }
35 |
36 | // 从min到max,步长为1遍历每个键值对
37 | for (long i = min; i <= max; i++) {
38 | boolean flag1 = false, flag2 = false;
39 | for (Map.Entry entry : map.entrySet()) {
40 | if (i >= entry.getKey() && i <= entry.getValue()) {
41 | if (!flag1)
42 | flag1 = true;
43 | else {
44 | flag2 = true;
45 | break;
46 | }
47 | }
48 | }
49 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠
50 | }
51 |
52 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/MultiInterval/MultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.Set;
6 |
7 | public interface MultiIntervalSet {
8 |
9 | /**
10 | * 创建一个空的MultiIntervalSet.
11 | *
12 | * @param L为MultiIntervalSet标签的类型
13 | * @return 一个空的MultiIntervalSet
14 | */
15 | public static MultiIntervalSet empty() {
16 | return new CommonMultiIntervalSet();
17 | }
18 |
19 | /**
20 | * 判断该MultiIntervalSet是否为空
21 | *
22 | * @return 为空返回true,不为空返回false
23 | */
24 | public boolean isEmpty();
25 |
26 | /**
27 | * 在当前的multiIntervalSet中插入新的时间段和标签
28 | *
29 | * @param start 时间段的起点
30 | * @param end 时间段的终点
31 | * @param label 时间段的标签
32 | */
33 | public void insert(long start, long end, L label);
34 |
35 | /**
36 | * 获得当前对象中的标签集合
37 | *
38 | * @return 当前对象中的标签集合
39 | */
40 | public Set labels();
41 |
42 | /**
43 | * 从当前MultiIntervalSet中移除某个标签所关联的所有时间段
44 | *
45 | * @param label 所要移除时间段的对应标签
46 | * @return 移除成功返回true,移除失败返回false
47 | */
48 | public boolean remove(L label);
49 |
50 | /**
51 | * 从当前对象中获取与某个标签所关联的所有时间段
52 | *
53 | * @param label 所要获取具体信息的时间段的对应标签
54 | * @return 返回IntervalSet,其中的时间段按开始时间从小到大的次序排列
55 | */
56 | public IntervalSet intervals(L label);
57 |
58 | /**
59 | * 判断时间轴是否允许空白
60 | *
61 | * @return 若存在空白,返回true;否则返回false
62 | */
63 | public boolean checkBlank();
64 |
65 | /**
66 | * 判断是否允许不同的 multiInterval 之间有重叠
67 | *
68 | * @return 若允许不同的 multiInterval 之间有重叠,返回true;否则返回false
69 | */
70 | public boolean checkOverlap();
71 |
72 | /**
73 | * 是否包含周期性的时间段
74 | *
75 | * @return 若包含周期性的时间段,则返回true;否则返回false
76 | */
77 | public boolean checkPeriodic();
78 | }
79 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/MultiInterval/MultiIntervalSetDecorator.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.Set;
6 |
7 | public abstract class MultiIntervalSetDecorator implements MultiIntervalSet {
8 | protected final MultiIntervalSet multiIntervalSet;
9 |
10 | // Constructor
11 | protected MultiIntervalSetDecorator(MultiIntervalSet multiIntervalSet) {
12 | this.multiIntervalSet = multiIntervalSet;
13 | }
14 |
15 | @Override
16 | public boolean isEmpty() {
17 | return multiIntervalSet.isEmpty();
18 | }
19 |
20 | @Override
21 | public void insert(long start, long end, L label) {
22 | multiIntervalSet.insert(start,end,label);
23 | }
24 |
25 | @Override
26 | public Set labels() {
27 | return multiIntervalSet.labels();
28 | }
29 |
30 | @Override
31 | public boolean remove(L label) {
32 | return multiIntervalSet.remove(label);
33 | }
34 |
35 | @Override
36 | public IntervalSet intervals(L label) {
37 | return multiIntervalSet.intervals(label);
38 | }
39 |
40 | @Override
41 | public boolean checkBlank() {
42 | return multiIntervalSet.checkBlank();
43 | }
44 |
45 | @Override
46 | public boolean checkOverlap() {
47 | return multiIntervalSet.checkOverlap();
48 | }
49 |
50 | @Override
51 | public boolean checkPeriodic() {
52 | return multiIntervalSet.checkPeriodic();
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/MultiInterval/NoBlankMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.HashMap;
6 | import java.util.IdentityHashMap;
7 | import java.util.Iterator;
8 | import java.util.Map;
9 |
10 | public class NoBlankMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
11 |
12 | // Constructor
13 | public NoBlankMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
14 | super(multiIntervalSet);
15 | }
16 |
17 | /*
18 | * 思路
19 | * 1.找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
20 | * 3.从min到max,步长为1遍历每个键值对
21 | * 4.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false
22 | */
23 | public boolean checkBlank() {
24 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合
25 | Map map = new IdentityHashMap<>();
26 |
27 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
28 | long min = Long.MAX_VALUE;
29 | long max = Long.MIN_VALUE;
30 | while (it.hasNext()) {
31 | L label = it.next();
32 | IntervalSet temp = multiIntervalSet.intervals(label);
33 | for (Integer tempLabel : temp.labels()) {
34 | map.put(temp.start(tempLabel), temp.end(tempLabel));
35 | min = Math.min(temp.start(tempLabel), min);
36 | max = Math.max(temp.end(tempLabel), max);
37 | }
38 | }
39 |
40 | //从min到max,步长为1遍历每个键值对
41 | for (long i = min; i < max; i++) {
42 | boolean flag = false;
43 | for (Map.Entry entry : map.entrySet()) {
44 | if (i >= entry.getKey() && i <= entry.getValue()) {
45 | flag = true;
46 | break;
47 | }
48 | }
49 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中
50 | }
51 | return false;
52 |
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/MultiInterval/NonOverlapMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.HashMap;
6 | import java.util.IdentityHashMap;
7 | import java.util.Iterator;
8 | import java.util.Map;
9 |
10 | public class NonOverlapMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
11 |
12 | // Constructor
13 | public NonOverlapMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
14 | super(multiIntervalSet);
15 | }
16 |
17 | /*
18 | * 思路
19 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
20 | * 2.从min到max,步长为1遍历每个键值对
21 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠
22 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
23 | */
24 | public boolean checkOverlap() {
25 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合
26 | Map map = new IdentityHashMap<>();
27 |
28 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
29 | long min = Long.MAX_VALUE;
30 | long max = Long.MIN_VALUE;
31 | while (it.hasNext()) {
32 | L label = it.next();
33 | IntervalSet temp = multiIntervalSet.intervals(label);
34 | for (Integer tempLabel : temp.labels()) {
35 | map.put(temp.start(tempLabel), temp.end(tempLabel));
36 | min = Math.min(temp.start(tempLabel), min);
37 | max = Math.max(temp.end(tempLabel), max);
38 | }
39 | }
40 |
41 | // 从min到max,步长为1遍历每个键值对
42 | for (long i = min; i < max; i++) {
43 | boolean flag1 = false, flag2 = false;
44 | for (Map.Entry entry : map.entrySet()) {
45 | if (i >= entry.getKey() && i <= entry.getValue()) {
46 | if (!flag1)
47 | flag1 = true;
48 | else {
49 | flag2 = true;
50 | break;
51 | }
52 | }
53 | }
54 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠
55 | }
56 |
57 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/ADT/MultiInterval/NonPeriodicMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | public class NonPeriodicMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
4 |
5 | // Constructor
6 | public NonPeriodicMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
7 | super(multiIntervalSet);
8 | }
9 |
10 | public boolean checkPeriodic() {
11 | return false;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/SubADT/CourseSchedule/Course.java:
--------------------------------------------------------------------------------
1 | package SubADT.CourseSchedule;
2 |
3 | import java.util.Objects;
4 |
5 | public class Course {
6 | private final String ID;
7 | private final String name;
8 | private final String teacher;
9 | private final String location;
10 | private final int weekHour;
11 |
12 | public Course(String ID, String name, String teacher, String location, int weekHour) {
13 | this.ID = ID; // 课程ID
14 | this.name = name; // 课程名称
15 | this.teacher = teacher; // 授课老师
16 | this.location = location; // 上课地点
17 | this.weekHour = weekHour; // 周最大学时数
18 | }
19 |
20 | public String getID() {
21 | return ID;
22 | }
23 |
24 | public String getName() {
25 | return name;
26 | }
27 |
28 | public String getTeacher() {
29 | return teacher;
30 | }
31 |
32 | public String getLocation() {
33 | return location;
34 | }
35 |
36 | public int getWeekHour() { return weekHour; }
37 |
38 | @Override
39 | public boolean equals(Object o) {
40 | if (this == o) return true;
41 | if (o == null || getClass() != o.getClass()) return false;
42 | Course course = (Course) o;
43 | return Objects.equals(ID, course.ID);
44 | }
45 |
46 | @Override
47 | public int hashCode() {
48 | return Objects.hash(ID);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/SubADT/DutyRoster/Employee.java:
--------------------------------------------------------------------------------
1 | package SubADT.DutyRoster;
2 |
3 | import java.util.Objects;
4 |
5 | public class Employee {
6 | private final String name; // 姓名
7 | private final String duty; // 职务
8 | private final String phone;// 电话
9 |
10 | public Employee(String name, String duty, String phone) {
11 | this.name = name;
12 | this.duty = duty;
13 | this.phone = phone;
14 | }
15 |
16 | public String getName() {
17 | return name;
18 | }
19 |
20 | public String getDuty() {
21 | return duty;
22 | }
23 |
24 | public String getPhone() {
25 | return phone;
26 | }
27 |
28 | @Override
29 | public boolean equals(Object o) {
30 | if (this == o) return true;
31 | if (o == null || getClass() != o.getClass()) return false;
32 | Employee employee = (Employee) o;
33 | return Objects.equals(name, employee.name);
34 | }
35 |
36 | @Override
37 | public int hashCode() {
38 | return Objects.hash(name);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/SubADT/ProcessSchedule/Process.java:
--------------------------------------------------------------------------------
1 | package SubADT.ProcessSchedule;
2 |
3 | import java.util.Objects;
4 |
5 | public class Process {
6 | private final long ID; // 进程ID
7 | private final String name; // 进程名称
8 | private final long minTime; // 最短执行时间
9 | private final long maxTime; // 最长执行时间
10 |
11 | public Process(long ID, String name, long minTime, long maxTime) {
12 | this.ID = ID;
13 | this.name = name;
14 | this.minTime = minTime;
15 | this.maxTime = maxTime;
16 | }
17 |
18 | public long getID() {
19 | return ID;
20 | }
21 |
22 | public String getName() {
23 | return name;
24 | }
25 |
26 | public long getMinTime() {
27 | return minTime;
28 | }
29 |
30 | public long getMaxTime() {
31 | return maxTime;
32 | }
33 |
34 | @Override
35 | public boolean equals(Object o) {
36 | if (this == o) return true;
37 | if (o == null || getClass() != o.getClass()) return false;
38 | Process process = (Process) o;
39 | return ID == process.ID;
40 | }
41 |
42 | @Override
43 | public int hashCode() {
44 | return Objects.hash(ID);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/txt/test1.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test1.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/txt/test2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test2.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/txt/test3.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test3.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/txt/test4.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test4.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/txt/test5.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test5.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/txt/test6.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test6.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/txt/test7.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test7.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/src/txt/test8.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test8.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/Interval/CommonIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/CommonIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/Interval/IntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/IntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/Interval/IntervalSetDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/IntervalSetDecorator.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/Interval/NoBlankIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/NoBlankIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/Interval/NonOverlapIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/NonOverlapIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/MultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/MultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/API/APIs.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/API/APIs.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/Course.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/Course.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/DutyIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/DutyIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/DutyRosterApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/DutyRosterApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/Employee.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/Employee.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/parserInput.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/parserInput.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/Process.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/Process.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/txt/test1.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test1.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/txt/test2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test2.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/txt/test3.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test3.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/txt/test4.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test4.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/txt/test5.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test5.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/txt/test6.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test6.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/txt/test7.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test7.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/classes/txt/test8.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test8.txt
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/Interval/CommonIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/CommonIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/Interval/IntervalSetStaticTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/IntervalSetStaticTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/API/APIsTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/API/APIsTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/test/ADT/Interval/CommonIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | public class CommonIntervalSetTest extends IntervalSetInstanceTest{
4 |
5 | /*
6 | * Provide a commonIntervalSet for tests in IntervalInstanceTest.
7 | */
8 | @Override
9 | public IntervalSet emptyInstance() {
10 | return new CommonIntervalSet<>();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/test/ADT/Interval/IntervalSetStaticTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import java.util.Collections;
6 |
7 | import static org.junit.Assert.assertEquals;
8 |
9 | public class IntervalSetStaticTest {
10 | @Test(expected = AssertionError.class)
11 | public void testAssertionsEnabled() {
12 | assert false; // make sure assertions are enabled with VM argument: -ea
13 | }
14 |
15 | @Test
16 | public void testEmptyVerticesEmpty() {
17 | assertEquals("expected empty() IntervalSet to have no labels",
18 | Collections.emptySet(), IntervalSet.empty().labels());
19 | }
20 |
21 | // test other label types
22 | @Test
23 | public void testDifferentDataLabel() {
24 | assertEquals("expected empty() IntervalSet to have no labels",
25 | Collections.emptySet(), IntervalSet.empty().labels());
26 | assertEquals("expected empty() IntervalSet to have no labels",
27 | Collections.emptySet(), IntervalSet.empty().labels());
28 | assertEquals("expected empty() IntervalSet to have no labels",
29 | Collections.emptySet(), IntervalSet.empty().labels());
30 | assertEquals("expected empty() IntervalSet to have no labels",
31 | Collections.emptySet(), IntervalSet.empty().labels());
32 | assertEquals("expected empty() IntervalSet to have no labels",
33 | Collections.emptySet(), IntervalSet.empty().labels());
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/test/ADT/Interval/NoBlankIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | public class NoBlankIntervalSetTest {
8 |
9 | /**
10 | * Tests that assertions are enabled.
11 | */
12 | @Test(expected = AssertionError.class)
13 | public void testAssertionsEnabled() {
14 | assert false;
15 | }
16 |
17 | @Test
18 | // 测试时间轴有空白的情况
19 | public void testCheckBlank1(){
20 | IntervalSet intervalSet = new CommonIntervalSet<>();
21 |
22 | intervalSet.insert(1,3,"a");
23 | intervalSet.insert(2,4,"b");
24 | intervalSet.insert(6,7,"c");
25 |
26 | assertTrue(intervalSet.checkBlank());
27 | }
28 |
29 | @Test
30 | // 测试时间轴无空白的情况
31 | public void testCheckBlank2(){
32 | IntervalSet intervalSet = new CommonIntervalSet<>();
33 |
34 | intervalSet.insert(10,200,"a");
35 | intervalSet.insert(200,300,"b");
36 | intervalSet.insert(20,50,"c");
37 | intervalSet.insert(250,400,"d");
38 |
39 | assertFalse(intervalSet.checkBlank());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/test/ADT/Interval/NonOverlapIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NonOverlapIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试允许重叠的情况
20 | public void testCheckOverlap1(){
21 | IntervalSet intervalSet = new CommonIntervalSet<>();
22 |
23 | intervalSet.insert(10,200,"a");
24 | intervalSet.insert(20,300,"b");
25 | intervalSet.insert(400,500,"c");
26 |
27 | assertTrue(intervalSet.checkOverlap());
28 | }
29 |
30 | @Test
31 | // 测试不允许重叠的情况
32 | public void testCheckOverlap2(){
33 | IntervalSet intervalSet = new CommonIntervalSet<>();
34 |
35 | intervalSet.insert(10,200,"a");
36 | intervalSet.insert(201,300,"b");
37 | intervalSet.insert(400,500,"c");
38 |
39 | assertFalse(intervalSet.checkOverlap());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/test/ADT/MultiInterval/NoBlankMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NoBlankMultiIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试时间轴有空白的情况
20 | public void testCheckBlank1(){
21 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>();
22 |
23 | multiIntervalSet.insert(1,3,"a");
24 | multiIntervalSet.insert(2,4,"a");
25 | multiIntervalSet.insert(6,7,"a");
26 |
27 | assertTrue(multiIntervalSet.checkBlank());
28 | }
29 |
30 | @Test
31 | // 测试时间轴无空白的情况
32 | public void testCheckBlank2(){
33 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>();
34 |
35 | multiIntervalSet.insert(10,200,"a");
36 | multiIntervalSet.insert(200,300,"a");
37 | multiIntervalSet.insert(20,50,"b");
38 | multiIntervalSet.insert(250,400,"b");
39 |
40 | assertFalse(multiIntervalSet.checkBlank());
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/test/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NonOverlapMultiIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试允许重叠的情况
20 | public void testCheckOverlap1(){
21 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>();
22 |
23 | MultiIntervalSet.insert(10,200,"a");
24 | MultiIntervalSet.insert(20,300,"a");
25 | MultiIntervalSet.insert(400,500,"a");
26 |
27 | assertTrue(MultiIntervalSet.checkOverlap());
28 | }
29 |
30 | @Test
31 | // 测试不允许重叠的情况
32 | public void testCheckOverlap2(){
33 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>();
34 |
35 | MultiIntervalSet.insert(10,200,"a");
36 | MultiIntervalSet.insert(201,300,"a");
37 | MultiIntervalSet.insert(400,500,"a");
38 |
39 | assertFalse(MultiIntervalSet.checkOverlap());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208-origin/test/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | public class NonPeriodicMultiIntervalSetTest {
6 |
7 | /**
8 | * Tests that assertions are enabled.
9 | */
10 | @Test(expected = AssertionError.class)
11 | public void testAssertionsEnabled() {
12 | assert false;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
3 |
4 | name: Java CI with Maven
5 |
6 | on:
7 | push:
8 | branches: [ master ]
9 | pull_request:
10 | branches: [ master ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v2
19 | - name: Set up JDK 8
20 | uses: actions/setup-java@v2
21 | with:
22 | java-version: '8'
23 | distribution: 'adopt'
24 | - name: Build with Maven
25 | run: mvn -B package --file pom.xml
26 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/.gitignore
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/dataSources.local.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/Lab3-1190200208-Report.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/Lab3-1190200208-Report.docx
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/hamcrest-core-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/hamcrest-core-1.3.jar
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/junit-4.12.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/junit-4.12.jar
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/shelved.patch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/shelved.patch
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57__Default_Changelist_.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Lab3-1190200208/.replit:
--------------------------------------------------------------------------------
1 | language = "java10"
--------------------------------------------------------------------------------
/Lab3-1190200208/README.md:
--------------------------------------------------------------------------------
1 | [](https://classroom.github.com/online_ide?assignment_repo_id=4889817&assignment_repo_type=AssignmentRepo)
2 |
--------------------------------------------------------------------------------
/Lab3-1190200208/doc/Lab3-1190200208-Report.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/doc/Lab3-1190200208-Report.docx
--------------------------------------------------------------------------------
/Lab3-1190200208/lib/hamcrest-core-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/lib/hamcrest-core-1.3.jar
--------------------------------------------------------------------------------
/Lab3-1190200208/lib/junit-4.12.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/lib/junit-4.12.jar
--------------------------------------------------------------------------------
/Lab3-1190200208/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.example
8 | Lab3-1190200208
9 | 1.0-SNAPSHOT
10 |
11 |
12 | junit
13 | junit
14 | 4.12
15 | test
16 |
17 |
18 |
19 |
20 | 14
21 | 14
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/Interval/IntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.Set;
4 |
5 | public interface IntervalSet {
6 |
7 | /**
8 | * 创建一个空的IntervalSet.
9 | *
10 | * @param L为IntervalSet标签的类型
11 | * @return 一个空的IntervalSet
12 | */
13 | public static IntervalSet empty() {
14 | return new CommonIntervalSet();
15 | }
16 |
17 | /**
18 | * 在当前的IntervalSet中插入新的时间段和标签
19 | *
20 | * @param start 时间段的起点
21 | * @param end 时间段的终点
22 | * @param label 时间段的标签
23 | */
24 | public void insert(long start, long end, L label);
25 |
26 | /**
27 | * 获得当前对象中的标签集合
28 | *
29 | * @return 当前对象中的标签集合
30 | */
31 | public Set labels();
32 |
33 | /**
34 | * 从当前IntervalSet中移除某个标签所关联的时间段
35 | *
36 | * @param label 所要移除时间段的对应标签
37 | * @return 移除成功返回true,移除失败返回false
38 | */
39 | public boolean remove(L label);
40 |
41 | /**
42 | * 返回某个标签对应的时间段的开始时间
43 | *
44 | * @param label 时间段对应的标签
45 | * @return 返回开始时间,若没找到标签对应的时间段,则返回-1
46 | */
47 | public long start(L label);
48 |
49 | /**
50 | * 返回某个标签对应的时间段的结束时间
51 | *
52 | * @param label 时间段对应的标签
53 | * @return 返回结束时间,若没找到标签对应的时间段,则返回-1
54 | */
55 | public long end(L label);
56 |
57 | /**
58 | * 判断该IntervalSet是否为空
59 | *
60 | * @return 为空返回true,不为空返回false
61 | */
62 | public boolean isEmpty();
63 |
64 | /**
65 | * 判断时间轴是否存在空白
66 | *
67 | * @return 若存在空白,返回true;否则返回false
68 | */
69 | public boolean checkBlank();
70 |
71 | /**
72 | * 判断是否存在不同的 interval 之间有重叠
73 | *
74 | * @return 若存在不同的 interval 之间有重叠,返回true;否则返回false
75 | */
76 | public boolean checkOverlap();
77 | }
78 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/Interval/IntervalSetDecorator.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.Set;
4 |
5 | public abstract class IntervalSetDecorator implements IntervalSet {
6 | protected final IntervalSet intervalSet;
7 |
8 | // Constructor
9 | public IntervalSetDecorator(IntervalSet intervalSet) {
10 | this.intervalSet = intervalSet;
11 | }
12 |
13 | @Override
14 | public void insert(long start, long end, L label) {
15 | intervalSet.insert(start, end, label);
16 | }
17 |
18 | @Override
19 | public Set labels() {
20 | return intervalSet.labels();
21 | }
22 |
23 | @Override
24 | public boolean remove(L label) {
25 | return intervalSet.remove(label);
26 | }
27 |
28 | @Override
29 | public long start(L label) {
30 | return intervalSet.start(label);
31 | }
32 |
33 | @Override
34 | public long end(L label) {
35 | return intervalSet.end(label);
36 | }
37 |
38 | @Override
39 | public boolean isEmpty() {
40 | return intervalSet.isEmpty();
41 | }
42 |
43 | @Override
44 | public boolean checkBlank() {
45 | return intervalSet.checkBlank();
46 | }
47 |
48 | @Override
49 | public boolean checkOverlap() {
50 | return intervalSet.checkOverlap();
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/Interval/NoBlankIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.HashMap;
4 | import java.util.IdentityHashMap;
5 | import java.util.Iterator;
6 | import java.util.Map;
7 |
8 | public class NoBlankIntervalSet extends IntervalSetDecorator implements IntervalSet {
9 |
10 | // Constructor
11 | public NoBlankIntervalSet(IntervalSet intervalSet) {
12 | super(intervalSet);
13 | }
14 |
15 | /*
16 | * 思路
17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
18 | * 2.从min到max,步长为1遍历每个键值对
19 | * 3.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false
20 | */
21 | public boolean checkBlank() {
22 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合
23 | Map map = new IdentityHashMap<>();
24 |
25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
26 | long min = Long.MAX_VALUE;
27 | long max = Long.MIN_VALUE;
28 | while (it.hasNext()) {
29 | L label = it.next();
30 | map.put(intervalSet.start(label), intervalSet.end(label));
31 | min = Math.min(intervalSet.start(label), min);
32 | max = Math.max(intervalSet.end(label), max);
33 | }
34 |
35 | //从min到max,步长为1遍历每个键值对
36 | for (long i = min; i < max; i++) {
37 | boolean flag = false;
38 | for (Map.Entry entry : map.entrySet()) {
39 | if (i >= entry.getKey() && i <= entry.getValue()) {
40 | flag = true;
41 | break;
42 | }
43 | }
44 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中
45 | }
46 | return false;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/Interval/NonOverlapIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import java.util.HashMap;
4 | import java.util.IdentityHashMap;
5 | import java.util.Iterator;
6 | import java.util.Map;
7 |
8 | public class NonOverlapIntervalSet extends IntervalSetDecorator implements IntervalSet {
9 |
10 | // Constructor
11 | public NonOverlapIntervalSet(IntervalSet intervalSet) {
12 | super(intervalSet);
13 | }
14 |
15 | /*
16 | * 思路
17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
18 | * 2.从min到max,步长为1遍历每个键值对
19 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠
20 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
21 | */
22 | public boolean checkOverlap() {
23 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合
24 | Map map = new IdentityHashMap<>(); // 保存每个时间轴的起点与终点
25 |
26 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
27 | long min = Long.MAX_VALUE;
28 | long max = Long.MIN_VALUE;
29 | while (it.hasNext()) {
30 | L label = it.next();
31 | map.put(intervalSet.start(label), intervalSet.end(label));
32 | min = Math.min(intervalSet.start(label), min);
33 | max = Math.max(intervalSet.end(label), max);
34 | }
35 |
36 | // 从min到max,步长为1遍历每个键值对
37 | for (long i = min; i <= max; i++) {
38 | boolean flag1 = false, flag2 = false;
39 | for (Map.Entry entry : map.entrySet()) {
40 | if (i >= entry.getKey() && i <= entry.getValue()) {
41 | if (!flag1)
42 | flag1 = true;
43 | else {
44 | flag2 = true;
45 | break;
46 | }
47 | }
48 | }
49 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠
50 | }
51 |
52 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/MultiInterval/MultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.Set;
6 |
7 | public interface MultiIntervalSet {
8 |
9 | /**
10 | * 创建一个空的MultiIntervalSet.
11 | *
12 | * @param L为MultiIntervalSet标签的类型
13 | * @return 一个空的MultiIntervalSet
14 | */
15 | public static MultiIntervalSet empty() {
16 | return new CommonMultiIntervalSet();
17 | }
18 |
19 | /**
20 | * 判断该MultiIntervalSet是否为空
21 | *
22 | * @return 为空返回true,不为空返回false
23 | */
24 | public boolean isEmpty();
25 |
26 | /**
27 | * 在当前的multiIntervalSet中插入新的时间段和标签
28 | *
29 | * @param start 时间段的起点
30 | * @param end 时间段的终点
31 | * @param label 时间段的标签
32 | */
33 | public void insert(long start, long end, L label);
34 |
35 | /**
36 | * 获得当前对象中的标签集合
37 | *
38 | * @return 当前对象中的标签集合
39 | */
40 | public Set labels();
41 |
42 | /**
43 | * 从当前MultiIntervalSet中移除某个标签所关联的所有时间段
44 | *
45 | * @param label 所要移除时间段的对应标签
46 | * @return 移除成功返回true,移除失败返回false
47 | */
48 | public boolean remove(L label);
49 |
50 | /**
51 | * 从当前对象中获取与某个标签所关联的所有时间段
52 | *
53 | * @param label 所要获取具体信息的时间段的对应标签
54 | * @return 返回IntervalSet,其中的时间段按开始时间从小到大的次序排列
55 | */
56 | public IntervalSet intervals(L label);
57 |
58 | /**
59 | * 判断时间轴是否允许空白
60 | *
61 | * @return 若存在空白,返回true;否则返回false
62 | */
63 | public boolean checkBlank();
64 |
65 | /**
66 | * 判断是否允许不同的 multiInterval 之间有重叠
67 | *
68 | * @return 若允许不同的 multiInterval 之间有重叠,返回true;否则返回false
69 | */
70 | public boolean checkOverlap();
71 |
72 | /**
73 | * 是否包含周期性的时间段
74 | *
75 | * @return 若包含周期性的时间段,则返回true;否则返回false
76 | */
77 | public boolean checkPeriodic();
78 |
79 | /**
80 | * 从当前MultiIntervalSet中移除某个标签所关联的特定时间段
81 | *
82 | * @param label 所要移除时间段的对应标签
83 | * @param start 所要移除时间段的起点
84 | * @return 移除成功返回true,移除失败返回false
85 | */
86 | public boolean removeSpecific(L label, long start);
87 | }
88 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/MultiInterval/MultiIntervalSetDecorator.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.Set;
6 |
7 | public abstract class MultiIntervalSetDecorator implements MultiIntervalSet {
8 | protected final MultiIntervalSet multiIntervalSet;
9 |
10 | // Constructor
11 | protected MultiIntervalSetDecorator(MultiIntervalSet multiIntervalSet) {
12 | this.multiIntervalSet = multiIntervalSet;
13 | }
14 |
15 | @Override
16 | public boolean isEmpty() {
17 | return multiIntervalSet.isEmpty();
18 | }
19 |
20 | @Override
21 | public void insert(long start, long end, L label) {
22 | multiIntervalSet.insert(start,end,label);
23 | }
24 |
25 | @Override
26 | public Set labels() {
27 | return multiIntervalSet.labels();
28 | }
29 |
30 | @Override
31 | public boolean remove(L label) {
32 | return multiIntervalSet.remove(label);
33 | }
34 |
35 | @Override
36 | public IntervalSet intervals(L label) {
37 | return multiIntervalSet.intervals(label);
38 | }
39 |
40 | @Override
41 | public boolean checkBlank() {
42 | return multiIntervalSet.checkBlank();
43 | }
44 |
45 | @Override
46 | public boolean checkOverlap() {
47 | return multiIntervalSet.checkOverlap();
48 | }
49 |
50 | @Override
51 | public boolean checkPeriodic() {
52 | return multiIntervalSet.checkPeriodic();
53 | }
54 |
55 | @Override
56 | public boolean removeSpecific(L label, long start) {
57 | return multiIntervalSet.removeSpecific(label,start);
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/MultiInterval/NoBlankMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.HashMap;
6 | import java.util.IdentityHashMap;
7 | import java.util.Iterator;
8 | import java.util.Map;
9 |
10 | public class NoBlankMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
11 |
12 | // Constructor
13 | public NoBlankMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
14 | super(multiIntervalSet);
15 | }
16 |
17 | /*
18 | * 思路
19 | * 1.找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
20 | * 3.从min到max,步长为1遍历每个键值对
21 | * 4.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false
22 | */
23 | public boolean checkBlank() {
24 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合
25 | Map map = new IdentityHashMap<>();
26 |
27 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
28 | long min = Long.MAX_VALUE;
29 | long max = Long.MIN_VALUE;
30 | while (it.hasNext()) {
31 | L label = it.next();
32 | IntervalSet temp = multiIntervalSet.intervals(label);
33 | for (Integer tempLabel : temp.labels()) {
34 | map.put(temp.start(tempLabel), temp.end(tempLabel));
35 | min = Math.min(temp.start(tempLabel), min);
36 | max = Math.max(temp.end(tempLabel), max);
37 | }
38 | }
39 |
40 | //从min到max,步长为1遍历每个键值对
41 | for (long i = min; i < max; i++) {
42 | boolean flag = false;
43 | for (Map.Entry entry : map.entrySet()) {
44 | if (i >= entry.getKey() && i <= entry.getValue()) {
45 | flag = true;
46 | break;
47 | }
48 | }
49 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中
50 | }
51 | return false;
52 |
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/MultiInterval/NonOverlapMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import ADT.Interval.IntervalSet;
4 |
5 | import java.util.*;
6 |
7 | public class NonOverlapMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
8 |
9 | // Constructor
10 | public NonOverlapMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
11 | super(multiIntervalSet);
12 | }
13 |
14 | /*
15 | * 思路
16 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
17 | * 2.从min到max,步长为1遍历每个键值对
18 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠
19 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
20 | */
21 | public boolean checkOverlap() {
22 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合
23 | List> map = new ArrayList<>();
24 |
25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中
26 | long min = Long.MAX_VALUE;
27 | long max = Long.MIN_VALUE;
28 | while (it.hasNext()) {
29 | L label = it.next();
30 | IntervalSet temp = multiIntervalSet.intervals(label);
31 | for (Integer tempLabel : temp.labels()) {
32 | List subList = new ArrayList<>();
33 | subList.add(temp.start(tempLabel));
34 | subList.add(temp.end(tempLabel));
35 | map.add(subList);
36 | min = Math.min(temp.start(tempLabel), min);
37 | max = Math.max(temp.end(tempLabel), max);
38 | }
39 | }
40 |
41 | // 从min到max,步长为1遍历每个键值对
42 | for (long i = min; i <= max; i++) {
43 | boolean flag1 = false, flag2 = false;
44 | Iterator> it2 = map.iterator();
45 | while (it2.hasNext()) {
46 | List entry = it2.next();
47 | if (i >= entry.get(0) && i <= entry.get(1)) {
48 | if (!flag1)
49 | flag1 = true;
50 | else {
51 | flag2 = true;
52 | break;
53 | }
54 | }
55 | }
56 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠
57 | }
58 |
59 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/ADT/MultiInterval/NonPeriodicMultiIntervalSet.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | public class NonPeriodicMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet {
4 |
5 | // Constructor
6 | public NonPeriodicMultiIntervalSet(MultiIntervalSet multiIntervalSet) {
7 | super(multiIntervalSet);
8 | }
9 |
10 | public boolean checkPeriodic() {
11 | return false;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/SubADT/CourseSchedule/Course.java:
--------------------------------------------------------------------------------
1 | package SubADT.CourseSchedule;
2 |
3 | import java.util.Objects;
4 |
5 | public class Course {
6 | private final String ID;
7 | private final String name;
8 | private final String teacher;
9 | private final String location;
10 | private final int weekHour;
11 |
12 | public Course(String ID, String name, String teacher, String location, int weekHour) {
13 | this.ID = ID; // 课程ID
14 | this.name = name; // 课程名称
15 | this.teacher = teacher; // 授课老师
16 | this.location = location; // 上课地点
17 | this.weekHour = weekHour; // 周最大学时数
18 | }
19 |
20 | public String getID() {
21 | return ID;
22 | }
23 |
24 | public String getName() {
25 | return name;
26 | }
27 |
28 | public String getTeacher() {
29 | return teacher;
30 | }
31 |
32 | public String getLocation() {
33 | return location;
34 | }
35 |
36 | public int getWeekHour() { return weekHour; }
37 |
38 | @Override
39 | public boolean equals(Object o) {
40 | if (this == o) return true;
41 | if (o == null || getClass() != o.getClass()) return false;
42 | Course course = (Course) o;
43 | return Objects.equals(ID, course.ID);
44 | }
45 |
46 | @Override
47 | public int hashCode() {
48 | return Objects.hash(ID);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/SubADT/DutyRoster/Employee.java:
--------------------------------------------------------------------------------
1 | package SubADT.DutyRoster;
2 |
3 | import java.util.Objects;
4 |
5 | public class Employee {
6 | private final String name; // 姓名
7 | private final String duty; // 职务
8 | private final String phone;// 电话
9 |
10 | public Employee(String name, String duty, String phone) {
11 | this.name = name;
12 | this.duty = duty;
13 | this.phone = phone;
14 | }
15 |
16 | public String getName() {
17 | return name;
18 | }
19 |
20 | public String getDuty() {
21 | return duty;
22 | }
23 |
24 | public String getPhone() {
25 | return phone;
26 | }
27 |
28 | @Override
29 | public boolean equals(Object o) {
30 | if (this == o) return true;
31 | if (o == null || getClass() != o.getClass()) return false;
32 | Employee employee = (Employee) o;
33 | return Objects.equals(name, employee.name);
34 | }
35 |
36 | @Override
37 | public int hashCode() {
38 | return Objects.hash(name);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/SubADT/ProcessSchedule/Process.java:
--------------------------------------------------------------------------------
1 | package SubADT.ProcessSchedule;
2 |
3 | import java.util.Objects;
4 |
5 | public class Process {
6 | private final long ID; // 进程ID
7 | private final String name; // 进程名称
8 | private final long minTime; // 最短执行时间
9 | private final long maxTime; // 最长执行时间
10 |
11 | public Process(long ID, String name, long minTime, long maxTime) {
12 | this.ID = ID;
13 | this.name = name;
14 | this.minTime = minTime;
15 | this.maxTime = maxTime;
16 | }
17 |
18 | public long getID() {
19 | return ID;
20 | }
21 |
22 | public String getName() {
23 | return name;
24 | }
25 |
26 | public long getMinTime() {
27 | return minTime;
28 | }
29 |
30 | public long getMaxTime() {
31 | return maxTime;
32 | }
33 |
34 | @Override
35 | public boolean equals(Object o) {
36 | if (this == o) return true;
37 | if (o == null || getClass() != o.getClass()) return false;
38 | Process process = (Process) o;
39 | return ID == process.ID;
40 | }
41 |
42 | @Override
43 | public int hashCode() {
44 | return Objects.hash(ID);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Lab3-1190200208/src/txt/test1.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test1.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/src/txt/test2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test2.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/src/txt/test3.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test3.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/src/txt/test4.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test4.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/src/txt/test5.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test5.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/src/txt/test6.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test6.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/src/txt/test7.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test7.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/src/txt/test8.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test8.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/Interval/CommonIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/CommonIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/Interval/IntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/IntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/Interval/IntervalSetDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/IntervalSetDecorator.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/Interval/NoBlankIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/NoBlankIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/Interval/NonOverlapIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/NonOverlapIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/MultiInterval/MultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/MultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/API/APIs.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/API/APIs.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/CourseSchedule/Course.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/CourseSchedule/Course.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/DutyRoster/DutyIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/DutyRoster/DutyIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/DutyRoster/DutyRosterApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/DutyRoster/DutyRosterApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/DutyRoster/Employee.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/DutyRoster/Employee.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/DutyRoster/parserInput.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/DutyRoster/parserInput.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/Process.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/Process.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/txt/test1.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test1.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/txt/test2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test2.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/txt/test3.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test3.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/txt/test4.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test4.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/txt/test5.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test5.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/txt/test6.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test6.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/txt/test7.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test7.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/classes/txt/test8.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test8.txt
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/Interval/CommonIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/CommonIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/Interval/IntervalSetStaticTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/IntervalSetStaticTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/API/APIsTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/API/APIsTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class
--------------------------------------------------------------------------------
/Lab3-1190200208/test/ADT/Interval/CommonIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | public class CommonIntervalSetTest extends IntervalSetInstanceTest{
4 |
5 | /*
6 | * Provide a commonIntervalSet for tests in IntervalInstanceTest.
7 | */
8 | @Override
9 | public IntervalSet emptyInstance() {
10 | return new CommonIntervalSet<>();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Lab3-1190200208/test/ADT/Interval/IntervalSetStaticTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import java.util.Collections;
6 |
7 | import static org.junit.Assert.assertEquals;
8 |
9 | public class IntervalSetStaticTest {
10 | @Test(expected = AssertionError.class)
11 | public void testAssertionsEnabled() {
12 | assert false; // make sure assertions are enabled with VM argument: -ea
13 | }
14 |
15 | @Test
16 | public void testEmptyVerticesEmpty() {
17 | assertEquals("expected empty() IntervalSet to have no labels",
18 | Collections.emptySet(), IntervalSet.empty().labels());
19 | }
20 |
21 | // test other label types
22 | @Test
23 | public void testDifferentDataLabel() {
24 | assertEquals("expected empty() IntervalSet to have no labels",
25 | Collections.emptySet(), IntervalSet.empty().labels());
26 | assertEquals("expected empty() IntervalSet to have no labels",
27 | Collections.emptySet(), IntervalSet.empty().labels());
28 | assertEquals("expected empty() IntervalSet to have no labels",
29 | Collections.emptySet(), IntervalSet.empty().labels());
30 | assertEquals("expected empty() IntervalSet to have no labels",
31 | Collections.emptySet(), IntervalSet.empty().labels());
32 | assertEquals("expected empty() IntervalSet to have no labels",
33 | Collections.emptySet(), IntervalSet.empty().labels());
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Lab3-1190200208/test/ADT/Interval/NoBlankIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | public class NoBlankIntervalSetTest {
8 |
9 | /**
10 | * Tests that assertions are enabled.
11 | */
12 | @Test(expected = AssertionError.class)
13 | public void testAssertionsEnabled() {
14 | assert false;
15 | }
16 |
17 | @Test
18 | // 测试时间轴有空白的情况
19 | public void testCheckBlank1(){
20 | IntervalSet intervalSet = new CommonIntervalSet<>();
21 |
22 | intervalSet.insert(1,3,"a");
23 | intervalSet.insert(2,4,"b");
24 | intervalSet.insert(6,7,"c");
25 |
26 | assertTrue(intervalSet.checkBlank());
27 | }
28 |
29 | @Test
30 | // 测试时间轴无空白的情况
31 | public void testCheckBlank2(){
32 | IntervalSet intervalSet = new CommonIntervalSet<>();
33 |
34 | intervalSet.insert(10,200,"a");
35 | intervalSet.insert(200,300,"b");
36 | intervalSet.insert(20,50,"c");
37 | intervalSet.insert(250,400,"d");
38 |
39 | assertFalse(intervalSet.checkBlank());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208/test/ADT/Interval/NonOverlapIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.Interval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NonOverlapIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试允许重叠的情况
20 | public void testCheckOverlap1(){
21 | IntervalSet intervalSet = new CommonIntervalSet<>();
22 |
23 | intervalSet.insert(10,200,"a");
24 | intervalSet.insert(20,300,"b");
25 | intervalSet.insert(400,500,"c");
26 |
27 | assertTrue(intervalSet.checkOverlap());
28 | }
29 |
30 | @Test
31 | // 测试不允许重叠的情况
32 | public void testCheckOverlap2(){
33 | IntervalSet intervalSet = new CommonIntervalSet<>();
34 |
35 | intervalSet.insert(10,200,"a");
36 | intervalSet.insert(201,300,"b");
37 | intervalSet.insert(400,500,"c");
38 |
39 | assertFalse(intervalSet.checkOverlap());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208/test/ADT/MultiInterval/NoBlankMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NoBlankMultiIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试时间轴有空白的情况
20 | public void testCheckBlank1(){
21 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>();
22 |
23 | multiIntervalSet.insert(1,3,"a");
24 | multiIntervalSet.insert(2,4,"a");
25 | multiIntervalSet.insert(6,7,"a");
26 |
27 | assertTrue(multiIntervalSet.checkBlank());
28 | }
29 |
30 | @Test
31 | // 测试时间轴无空白的情况
32 | public void testCheckBlank2(){
33 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>();
34 |
35 | multiIntervalSet.insert(10,200,"a");
36 | multiIntervalSet.insert(200,300,"a");
37 | multiIntervalSet.insert(20,50,"b");
38 | multiIntervalSet.insert(250,400,"b");
39 |
40 | assertFalse(multiIntervalSet.checkBlank());
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Lab3-1190200208/test/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertFalse;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | public class NonOverlapMultiIntervalSetTest {
9 |
10 | /**
11 | * Tests that assertions are enabled.
12 | */
13 | @Test(expected = AssertionError.class)
14 | public void testAssertionsEnabled() {
15 | assert false;
16 | }
17 |
18 | @Test
19 | // 测试允许重叠的情况
20 | public void testCheckOverlap1(){
21 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>();
22 |
23 | MultiIntervalSet.insert(10,200,"a");
24 | MultiIntervalSet.insert(20,300,"a");
25 | MultiIntervalSet.insert(400,500,"a");
26 |
27 | assertTrue(MultiIntervalSet.checkOverlap());
28 | }
29 |
30 | @Test
31 | // 测试不允许重叠的情况
32 | public void testCheckOverlap2(){
33 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>();
34 |
35 | MultiIntervalSet.insert(10,200,"a");
36 | MultiIntervalSet.insert(201,300,"a");
37 | MultiIntervalSet.insert(400,500,"a");
38 |
39 | assertFalse(MultiIntervalSet.checkOverlap());
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Lab3-1190200208/test/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.java:
--------------------------------------------------------------------------------
1 | package ADT.MultiInterval;
2 |
3 | import org.junit.Test;
4 |
5 | public class NonPeriodicMultiIntervalSetTest {
6 |
7 | /**
8 | * Tests that assertions are enabled.
9 | */
10 | @Test(expected = AssertionError.class)
11 | public void testAssertionsEnabled() {
12 | assert false;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # HIT-SC-2020Spring
2 | 哈工大2020春哈工大2020春软件构造资料(实验/PPT/往年考试题)
3 | ## 实验
4 | 实验开发环境为IDEA 2020.3.1,**实验建议好好做!!!能学到很多实际开发时的知识!!!只有自己上手敲才知道细节!!!**实验的说明放在每个lab对应文件夹里的doc文件夹中,里面详细记录了每个实验的思路,可供在代码读不懂时参考。不过,也希望你用这份资料仅供参考,而非白嫖(认真)
5 |
6 | ## 往年题
7 |
8 | 考题的格式就是往年题所展示的格式。根据我们这届的情况,往年题做着有用,但选填部分其实参考价值不大...对于大题部分的话,**会写几种设计模式**是最重要的(一定会考!!!)
9 |
10 | ## PPT
11 |
12 | 课程PPT,英文版的
13 |
14 | ## 写在最后的话
15 |
16 | 听说下几届没有软件构造这门课了,其实吧...我觉得这门课算是我学到现在,觉得用处最大的课了(毕竟大部分人最终是要进厂写代码的,搞科研的终究是少数),也不知道为什么要砍掉它。通过这门课,可以难得地在大学期间接触一些实际软件开发用到的理论。如果后面的学弟学妹不学这门课了,可能我把这些资料传在github上的用处也不太大了。但是,如果有后来人想要借这份资料钻研、学习,那这份资料也就有了它存在的意义吧。
--------------------------------------------------------------------------------
/习题课3可复用与可维护构造技术.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/习题课3可复用与可维护构造技术.pdf
--------------------------------------------------------------------------------
/实验指导书/lab-0 lab guidelines.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/实验指导书/lab-0 lab guidelines.pdf
--------------------------------------------------------------------------------
/实验指导书/lab-1 fundamental java programming and testing.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/实验指导书/lab-1 fundamental java programming and testing.pdf
--------------------------------------------------------------------------------
/实验指导书/lab-2 adt and oop.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/实验指导书/lab-2 adt and oop.pdf
--------------------------------------------------------------------------------
/实验指导书/lab-3 reusability and maintainability oriented programming v3.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/实验指导书/lab-3 reusability and maintainability oriented programming v3.pdf
--------------------------------------------------------------------------------
/往年考试题/2018年春季期末考试题.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/往年考试题/2018年春季期末考试题.pdf
--------------------------------------------------------------------------------
/往年考试题/2019年春季期末考试题.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/往年考试题/2019年春季期末考试题.pdf
--------------------------------------------------------------------------------
/往年考试题/2020年春季期末考试题.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/往年考试题/2020年春季期末考试题.pdf
--------------------------------------------------------------------------------
/软构PPT/1 views and quality objectives of software construction.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/1 views and quality objectives of software construction.pdf
--------------------------------------------------------------------------------
/软构PPT/10 construction for change.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/10 construction for change.pdf
--------------------------------------------------------------------------------
/软构PPT/11 design patterns for reuse and maintainability.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/11 design patterns for reuse and maintainability.pdf
--------------------------------------------------------------------------------
/软构PPT/12 construction for robustness and correctness.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/12 construction for robustness and correctness.pdf
--------------------------------------------------------------------------------
/软构PPT/2 testing and test-first programming.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/2 testing and test-first programming.pdf
--------------------------------------------------------------------------------
/软构PPT/3 software construction process and configuration management.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/3 software construction process and configuration management.pdf
--------------------------------------------------------------------------------
/软构PPT/4 data type and type checking.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/4 data type and type checking.pdf
--------------------------------------------------------------------------------
/软构PPT/5 designing specification.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/5 designing specification.pdf
--------------------------------------------------------------------------------
/软构PPT/6 abstract data type (adt).pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/6 abstract data type (adt).pdf
--------------------------------------------------------------------------------
/软构PPT/7 object-oriented programming (oop).pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/7 object-oriented programming (oop).pdf
--------------------------------------------------------------------------------
/软构PPT/8 equality in adt and oop.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/8 equality in adt and oop.pdf
--------------------------------------------------------------------------------
/软构PPT/9 construction for reuse.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/9 construction for reuse.pdf
--------------------------------------------------------------------------------