一、实现功能——模拟学生选课功能

1.选择课程

2.修改所选课程

二、实现功能——模拟学生信息管理功能

1.添加学生信息

2.修改学生信息

二、主要代码(在同一个包里)

1.课程类

 public class Course
{
private String id;
private String name;
public Course(){}
public Course(String id,String name)
{
this.name = name;
this.id = id;
}
public String getId()
{
return id;
}
public String getName()
{
return name;
}
}

2.学生类

 import java.util.HashSet;
import java.util.Set; public class Student
{
private String name;
private String id;
public Set<Course> courses;//Set类型属性——课程信息
public Student(String name,String id)
{
this.name = name;
this.id = id;
this.courses = new HashSet<Course>();
}
public String getId()
{
return id;
}
public String getName()
{
return name;
}
}

3.增、删、改、查

 //添加、查询、删除
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays; public class ListTest
{
public List<Course> coursesToSelect;
public ListTest()
{
this.coursesToSelect = new ArrayList<Course>();//List的重要实现类ArrayList
}
//添加课程方法
public void testAdd()
{
Course c1 = new Course("2","数据结构");
coursesToSelect.add(c1);//加入队列
//System.out.println("课程添加成功!");
Course temp = (Course) coursesToSelect.get(0);//类型强转,取出第1个对象
Course c2 = new Course("1","C语言");//加入队列并指定位置
coursesToSelect.add(0,c2);//加入队列,排在第二位
Course temp2 = (Course) coursesToSelect.get(0);//类型强转,取出第2个对象
//依次添加多门课程,用数组存放
Course[] course = {new Course("3","离散数学"),new Course("4","操作系统"),new Course("5","高等数学"),new Course("6","大学英语")};
coursesToSelect.addAll(Arrays.asList(course));
Course temp3 = (Course) coursesToSelect.get(2);
Course temp4 = (Course) coursesToSelect.get(3);
Course temp5 = (Course) coursesToSelect.get(4);
Course temp6 = (Course) coursesToSelect.get(5);
}
//查询课程
public void testGet()
{
int size = coursesToSelect.size();
System.out.println("请从以下课程中选课:");
for(int i=0;i<size;i++)
{
Course c = (Course) coursesToSelect.get(i);
System.out.println(c.getId() + ":" + c.getName());
}
}
//修改课程
public void testModify()
{
System.out.println("\n修改课程后:");
coursesToSelect.set(3, new Course("4","马克思主义"));
testGet();
}
//删除课程
public void testRemove()
{
System.out.println("\n删除课程后:");
coursesToSelect.remove(5);
testGet();
} public static void main(String[] args)
{
ListTest lt = new ListTest();
lt.testAdd();
lt.testGet();
lt.testModify();
lt.testRemove();
}
}

4.学生选课

import java.util.Scanner;

public class SetTest extends ListTest
{
public static void main(String[] args)
{
System.out.println("欢迎进入选课系统!");
SetTest st = new SetTest();
st.testAdd();
st.testGet(); Student s1 = new Student("1","Mary");
Scanner console = new Scanner(System.in);
for(int i=0;i<3;i++)
{
System.out.println("请输出课程ID:");
String courseId = console.next();
for(Course cr:st.coursesToSelect)
{
if(cr.getId().equals(courseId))
{
s1.courses.add(cr);
}
}
}
for(Course cr:s1.courses)
{
System.out.println("选择了课程:"+cr.getId()+":"+cr.getName());
}
} }

运行结果:

欢迎进入选课系统!
请从以下课程中选课:
1:C语言
2:数据结构
3:离散数学
4:操作系统
5:高等数学
6:大学英语
请输出课程ID:
2
请输出课程ID:
3
请输出课程ID:
1
选择了课程:1:C语言
选择了课程:3:离散数学
选择了课程:2:数据结构

5.添加学生

 import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set; public class MapTest
{
//用来承装学生类型的对象
public Map<String,Student> students; public MapTest()
{
this.students = new HashMap<String,Student>();
}
public void testPut()
{
Scanner console = new Scanner(System.in);
int i=0;
while(i<3)
{
System.out.println("请输入学生ID:");
String ID = console.next();
Student st = students.get(ID);
if(st==null)
{
System.out.println("请输入学生姓名:");
String name = console.next();
Student newStudent = new Student(ID,name);
students.put(ID,newStudent);
System.out.println("成功添加学生:" + students.get(ID).getName());
i++;
}
else
{
System.out.println("该学生ID已被占用!");
continue;
}
}
}
public void testKeySet()
{
Set<String> keySet = students.keySet();//返回Map中所有键的集合
System.out.println("\n总共有: " + students.size() + "名学生!\n学生信息如下:");
for(String stuId:keySet)
{
Student st = students.get(stuId);
if(st!=null)
{
System.out.println("学号:" + st.getId() + " , 姓名:" + st.getName());
}
}
}
public static void main(String[] args)
{
MapTest mt = new MapTest();
mt.testPut();
mt.testKeySet();
}
}

运行结果:

请输入学生ID:
2015028601
请输入学生姓名:
Tom
成功添加学生:Tom
请输入学生ID:
2015028602
请输入学生姓名:
Mary
成功添加学生:Mary
请输入学生ID:
2015028603
请输入学生姓名:
Jack
成功添加学生:Jack

总共有: 3名学生!
学生信息如下:
学号:2015028602  , 姓名:Mary
学号:2015028603  , 姓名:Jack
学号:2015028601  , 姓名:Tom

6.删除学生

 public void testRemove()
{
Scanner console = new Scanner(System.in);
while(true)
{
String ID = console.nextLine();
Student st = students.get(ID);
if(st==null)
{
System.out.println("该ID不存在!");
continue;
}
students.remove(ID);
System.out.println("成功删除学生:"+st.getName());
}
}

以上的所有代码均是一个单独执行的程序,实现单一的功能,并没有整合起来组成一个成套的学生选课(或信息)管理系统,但程序组成的原理大同小异,都是对Java类集中各类方法的调用,作为后期课程设计时的一个参考。

Java类集综合练习——信息管理(增、删、改、查)的更多相关文章

  1. Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)

    一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...

  2. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  3. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  4. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  5. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  6. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  7. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  8. python基础中的四大天王-增-删-改-查

    列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...

  9. 简单的php数据库操作类代码(增,删,改,查)

    这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...

随机推荐

  1. Python描述符:property()函数的小秘密

    描述符:将某种特殊类型的类的实例指派给另一个类的属性(注意:这里是类属性,而不是对象属性).而这种特殊类型的类就是实现了__get__,__set__,__delete__这三个方法中的一个或多个的新 ...

  2. POJ 2286 The Rotation Game IDA*

    (再一次感谢学长幻灯片) ID A* 随便自己yy了一下. 额嗯 思路什么的都没有问题 就是改不对.. 无奈地删代码...边删边交. 删啊删 哎呦 AC了 ... ... ... 找删的那一段 . o ...

  3. python 进程理论基础

    背景知识 顾名思义,进程即一个软件正在进行的过程.进程是对正在运行的程序的一个抽象 进程的概念起源于操作系统,是操作系统的最核心的概念,也是操作系统提供的最古老的也是最重要的抽象概念之一.操作系统的其 ...

  4. 重装系统后快速安装.NET 3.5

    每一次重装系统(Windows 8.1 和Windows 10)之后,最让我头疼的一件事就是配置把一大堆软件装上了.通常我会装好SQL Server之后,把电脑放在工作组安装Visual Studio ...

  5. web通信之跨文档通信 postMessage

    index.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...

  6. angular2之组件通讯

    定义父组件,在父组件中以路由插座形式引入子组件,定义相关输入输出属性 可以在同一模块内部定义多个组件,将一个组件引入另一个组件中去:也可以该模块整体导出,将该模块导入到其他模块,这样此模块中的组件就能 ...

  7. Android_传感器光学

    上一篇写了一个小案例方向传感器,与这光学传感器原理大致类似,但其实代码的主要区别得到的类型不一样在这里我一一列举出来: * Sensor.TYPE_ORIENTATION:方向传感器. * Senso ...

  8. 三维重建面试4:Jacobian矩阵和Hessian矩阵

    在使用BA平差之前,对每一个观测方程,得到一个代价函数.对多个路标,会产生一个多个代价函数的和的形式,对这个和进行最小二乘法进行求解,使用优化方法.相当于同时对相机位姿和路标进行调整,这就是所谓的BA ...

  9. 定位IO瓶颈的方法,iowait低,IO就没有到瓶颈?

    通过分析mpstat的iowait和iostat的util%,判断IO瓶颈 IO瓶颈往往是我们可能会忽略的地方(我们常会看top.free.netstat等等,但经常会忽略IO的负载情况),今天给大家 ...

  10. win10家庭版转专业版并激活

    之前重装win10的时候没注意,不小心装成家庭版. 本以为家庭版也没什么,后来发现这对程序员来说造成致命打击. 在系统信息页面底部点击“更改密匙”,输入win10升级产品密匙:VK7JG-NPHTM- ...