摩尔的Java学习笔记5.2
第四周作业:
1、(抽象类)1)定义shape抽象类,包含求面积和求周长的方法;2)定义Circle类和Rectangle类继承shape类;3)定义Square类继承Rectangle类;4)运行时,让用户选择输入图形的种类,然后输入相应数据,求出该图形的面积和周长;
2、(数组)课程管理每学期都要开设多门课程,每门课程的信息包括课程名称、是否是必修课、授课教师、学时、学分;编程实现对课程信息进行创建、添加、删除、修改和查询操作;可以按课程名、是否是必修课、授课教师来进行查询;修改或删除之前要先查询;第五周作业:
3、(接口)1)定义shape接口,包含求面积和求周长的方法;2)定义Circle类、Rectangle类、Square类;3)要求Circle类和Rectangle类实现shape接口,Square类继承Rectangle类;4)运行时,让用户选择输入什么图形,然后输入相应数据,求出该图形的面积和周长;
4、(向量)课程管理 每学期都要开设多门课程,每门课程的信息包括课程名称、是否是必修课、授课教师、学时、学分;编程实现对课程信息进行创建、添加、删除、修改和查询操作;可以按课程名、是否是必修课、授课教师来进行查询;修改或删除之前要先查询。
(向量)课程管理 每学期都要开设多门课程,每门课程的信息包括课程名称、是否是必修课、授课教师、学时、学分;编程实现对课程信息进行创建、添加、删除、修改和查询操作;可以按课程名、是否是必修课、授课教师来进行查询;修改或删除之前要先查询。
/*供测试时复制用的课程信息:
* (输入时一行一行输入)
高数 是 马 35 5
Java 否 王 30 3
C++ 否 焦 30 3
C 是 周 30 5
*/
/**
* @author 薛莲婷
*(向量)课程管理 每学期都要开设多门课程,每门课程的信息包括课程名称、是否是必修课、授课教师、学时、学分;
*编程实现对课程信息进行创建、添加、删除、修改和查询操作;
*可以按课程名、是否是必修课、授课教师来进行查询;修改或删除之前要先查询
*/
import java.util.*;;
class Course{
String courseName; //课程名称
String compulsory; //是否是必修课
String teacher; //授课教师
int hour; //学时
int credit; //学分
static int count; //课程个数
Course(){} //构造方法
Course(String courseName,String compulsory,String teacher,int hour,int credit){
this.courseName=courseName;
this.compulsory=compulsory;
this.teacher=teacher;
this.hour=hour;
this.credit=credit;
}
void modifyAll(){ //一系列修改成员变量的方法
Scanner sc=new Scanner(System.in);
System.out.println("(一行一门课程)\n\t课程名称\t是否是必修课\t授课教师\t学时\t学分");
courseName=sc.next();
compulsory=sc.next();
teacher=sc.next();
hour=sc.nextInt();
credit=sc.nextInt();
}
void modifyCourseName(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入课程名称:");
courseName=sc.next();
}
void modifyCompulsory(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入是否必修课:");
compulsory=sc.next();
}
void modifyTeacher(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入授课教师:");
teacher=sc.next();
}
void modifyHour(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入学时:");
hour=sc.nextInt();
}
void modifyCredit(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入学分:");
credit=sc.nextInt();
}
}
class CourseVector {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
CourseVector manage=new CourseVector();
Vector<Course> course=manage.initialize(); //课程系统初始化录入信息
manage.menu(); //呈现系统菜单
System.out.println("请输入相应的编号:");
int x; //用户指令
while(true){
x=sc.nextInt();
switch (x){
//0、退出系统
case 0:System.out.println("已退出系统,欢迎下次使用!");sc.close();System.exit(0);break;
//1、课程添加
case 1:course=manage.addCourse(course);break;
//2、课程删除
case 2:course=manage.deleteCourse(course);break;
//3、课程修改
case 3:course=manage.modifyCourse(course);break;
//4、显示全部课程信息
case 4:manage.displayAllCourse(course);break;
//5、课程查询
case 5:manage.referCourse(course);break;
//6、重现菜单
case 6:manage.menu();break;
//输入错误
default:System.out.print("输入有误,");
}
System.out.println("请输入相应的编号继续使用:\n(或输入“6”重现主菜单,输入“0”退出系统)");
}
}
//初始化
Vector<Course> initialize(){
Scanner sc=new Scanner(System.in);
CourseVector manage=new CourseVector();
Vector<Course> course=new Vector<Course>();
System.out.println("————————————————课程管理系统————————————————");
System.out.println("————————————————————————————————————————");
System.out.println("正在初始化课程信息列表,请输入要创建的课程数:");
int count=sc.nextInt();
System.out.println("(一行一门课程)\n课程名称\t是否是必修课\t授课教师\t学时\t学分");
for(int i=0;i<count;i++){
course.addElement(manage.createCourse());
}
System.out.println("已完成课程信息录入。");
return course;
}
//创建一个Course对象
Course createCourse(){
Scanner sc=new Scanner(System.in);
String courseName=sc.next();
String compulsory=sc.next();
String teacher=sc.next();
int hour=sc.nextInt();
int credit=sc.nextInt();
Course aCourse=new Course(courseName,compulsory,teacher,hour,credit);
return aCourse;
}
//系统菜单方法
void menu(){
System.out.println("————————————————课程管理系统————————————————");
System.out.println("————————————————————————————————————————");
System.out.println(" 1、课程添加 2、课程删除");
System.out.println(" 3、课程修改 4、显示全部课程信息");
System.out.println(" 5、课程查询(按课程名、授课教师 或 是否必修课)");
System.out.println(" 0、退出系统");
System.out.println("————————————————————————————————————————");
}
//课程添加方法
Vector<Course> addCourse(Vector<Course> course){
Scanner sc=new Scanner(System.in);
CourseVector manage=new CourseVector();
System.out.println("请输入要添加的课程数:");
int count=sc.nextInt();
System.out.println("(一行一门课程)\n课程名称\t是否是必修课\t授课教师\t学时\t学分");
for(int i=0;i<count;i++){
course.addElement(manage.createCourse());
}
System.out.println("已完成课程信息添加。");
return course;
}
//显示所有课程信息方法
void displayAllCourse(Vector<Course> course){
System.out.println("所有课程信息:");
System.out.println("实时编号\t课程名称\t是否是必修课\t授课教师\t学时\t学分");
for(int i=0;i<course.size();i++){
System.out.println((i+1)+"\t"+course.elementAt(i).courseName+"\t"+course.elementAt(i).compulsory+"\t"+course.elementAt(i).teacher+"\t"+course.elementAt(i).hour+"\t"+course.elementAt(i).credit);
}
}
//课程查询方法
void referCourse(Vector<Course> course){
Scanner sc=new Scanner(System.in);
int x; //用户指令
int normal; //指令输入是否正确
int get; //查询是否得到结果
while(true){
normal=1;
get=0;
System.out.println("查询课程,请选择:\n1、按课程名查询\t2、按授课老师查询\t3、按是否必须课查询\t0、退出查询");
x=sc.nextInt();
//课程名
if(x==1){
System.out.println("请输入课程名:");
String name=sc.next();
System.out.println("查询结果:");
System.out.println("编号\t课程名称\t是否是必修课\t授课教师\t学时\t学分");
for(int i=0;i<course.size();i++){
if(course.elementAt(i).courseName.equals(name)){
get=1;
System.out.println((i+1)+"\t"+course.elementAt(i).courseName+"\t"+course.elementAt(i).compulsory+"\t"+course.elementAt(i).teacher+"\t"+course.elementAt(i).hour+"\t"+course.elementAt(i).credit);
}
}
if(get==0){
System.out.println("没有相关结果!");
}
}
//授课老师
else if(x==2){
System.out.println("请输入授课老师名:");
String name=sc.next();
System.out.println("查询结果:");
System.out.println("编号\t课程名称\t是否是必修课\t授课教师\t学时\t学分");
for(int i=0;i<course.size();i++){
if(course.elementAt(i).teacher.equals(name)){
get=1;
System.out.println((i+1)+"\t"+course.elementAt(i).courseName+"\t"+course.elementAt(i).compulsory+"\t"+course.elementAt(i).teacher+"\t"+course.elementAt(i).hour+"\t"+course.elementAt(i).credit);
}
}
if(get==0){
System.out.println("没有相关结果!");
}
}
//是否必修课
else if(x==3){
System.out.println("请输入课程属性(“是”/“否”必修课):");
String name=sc.next();
System.out.println("查询结果:");
System.out.println("编号\t课程名称\t是否是必修课\t授课教师\t学时\t学分");
for(int i=0;i<course.size();i++){
if(course.elementAt(i).compulsory.equals(name)){
get=1;
System.out.println((i+1)+"\t"+course.elementAt(i).courseName+"\t"+course.elementAt(i).compulsory+"\t"+course.elementAt(i).teacher+"\t"+course.elementAt(i).hour+"\t"+course.elementAt(i).credit);
}
}
if(get==0){
System.out.println("没有相关结果!");
}
}
//退出查询
else if(x==0){
break;
}
//输入错误
else{
normal=0;
System.out.println("输入错误,请重新选择:");
}
//每次正常完成查询后询问是否继续查询
if(normal==1){
System.out.println("继续查询请输“1”,退出查询请输“0”:");
if(sc.nextInt()==0){
break;
}
}
}
}
//课程删除方法
Vector<Course> deleteCourse(Vector<Course> course){
Scanner sc=new Scanner(System.in);
CourseVector manageNow=new CourseVector();
int i; //删除项索引号
while(true){
System.out.println("对要删除的课程进行查询,");
manageNow.referCourse(course);
System.out.println("请输入要删除的一个课程编号:(输“0”退出删除)");
i=sc.nextInt()-1;
if(i>course.size()-1||i<-1){
System.out.print("没有此编号,");
}
else if(i==-1){
break;
}
else{
//删除项确认
System.out.println("即将删除的课程为:");
System.out.println("编号\t课程名称\t是否是必修课\t授课教师\t学时\t学分");
System.out.println((i+1)+"\t"+course.elementAt(i).courseName+"\t"+course.elementAt(i).compulsory+"\t"+course.elementAt(i).teacher+"\t"+course.elementAt(i).hour+"\t"+course.elementAt(i).credit);
System.out.println("确认 删除请输“1”,退出删除请输“0”:");
if(sc.nextInt()==0){
break;
}
//进行删除
course.remove(i);
System.out.print("系统现存");
manageNow.displayAllCourse(course);
//询问是否继续删除
System.out.println("继续 删除请输“1”,退出删除请输“0”:");
if(sc.nextInt()==0){
break;
}
}
}
return course;
}
//课程修改方法
Vector<Course> modifyCourse(Vector<Course> course){
Scanner sc=new Scanner(System.in);
CourseVector manageNow=new CourseVector();
int i; //修改项索引号
int x; //用户指令
int normal; //指令输入是否正确
while(true){
normal=1;
System.out.println("对要修改的课程进行查询,");
manageNow.referCourse(course);
while(true){
System.out.println("请输入要修改的一个课程编号:");
if((i=sc.nextInt()-1)>course.size()-1){
System.out.print("没有此编号,");
}
else{
break;
}
}
System.out.println("编号\t课程名称\t是否是必修课\t授课教师\t学时\t学分");
System.out.println((i+1)+"\t"+course.elementAt(i).courseName+"\t"+course.elementAt(i).compulsory+"\t"+course.elementAt(i).teacher+"\t"+course.elementAt(i).hour+"\t"+course.elementAt(i).credit);
System.out.println("请选择修改的内容1、全部,2、课程名称,3、是否必修课,4、授课老师,5、学时,6、学分,0、不修改此项课程:");
x=sc.nextInt();
switch (x){
//0、不修改此项课程
case 0:break;
//1、全部
case 1:course.elementAt(i).modifyAll();;break;
//2、课程名称
case 2:course.elementAt(i).modifyCourseName();;break;
//3、是否必修课
case 3:course.elementAt(i).modifyCompulsory();;break;
//4、授课老师
case 4:course.elementAt(i).modifyTeacher();;break;
//5、学时
case 5:course.elementAt(i).modifyHour();;break;
//6、学分
case 6:course.elementAt(i).modifyCredit();;break;
//输入错误
default:normal=0;System.out.println("输入有误,请重新输入:");
}
//每次正常完成修改后显示结果并询问是否继续使用修改功能
if(normal==1){
System.out.println("已完成,结果如下:");
System.out.println("编号\t课程名称\t是否是必修课\t授课教师\t学时\t学分");
System.out.println((i+1)+"\t"+course.elementAt(i).courseName+"\t"+course.elementAt(i).compulsory+"\t"+course.elementAt(i).teacher+"\t"+course.elementAt(i).hour+"\t"+course.elementAt(i).credit);
System.out.println("继续使用修改功能请输“1”,退出修改请输“0”:");
if(sc.nextInt()==0){
break;
}
}
}
return course;
}
}