Java类集综合练习——信息管理(增、删、改、查)
一、实现功能——模拟学生选课功能
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类集综合练习——信息管理(增、删、改、查)的更多相关文章
- Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)
一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- python基础中的四大天王-增-删-改-查
列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...
- 简单的php数据库操作类代码(增,删,改,查)
这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...
随机推荐
- POJ 3630 trie树
Phone List Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26559 Accepted: 8000 Descripti ...
- mybatis parameterType报错:There is no getter for property named 'xxx' in 'class java.lang.String'
方法1: 当parameterType = "java.lang.String" 的时候,参数读取的时候必须为 _parameter 方法2: 在dao层的时候,设置一下参数,此方 ...
- Oracle快速收集AWR的方案
记一种方便的awr收集方法,该脚本可以按小时收集目标时段的awr 素材:awr_generate.sql(具体脚本内容请见本文末尾) (1)将awr_generate.sql置于数据库服务器本地路径, ...
- java线程中断2
一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果. 所以你看到Thread.suspend, Thread.stop等方法都被Deprecated了.那么不 ...
- C# 怎么把类文件如(XXX.cs)转为dll文件
打开VS2012或2017 ,新建项目,选择 类库(.NET Framework),创建好一个项目 在建好的项目中添加需要转的类文件 然后将项目重新生成后,在项目的Debug下就可以找到对应的dll ...
- swift里 as、as!、as?区别 T.Type与动态类型
as 1.编译器进行类型转换合法性检查:静态 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: shoppingLi ...
- iOS 加密算法汇总
CCCryptorStatus CCCryptorCreate( CCOperation op, /* kCCEncrypt, etc. */ CCAlgorithm alg, ...
- Django的Error汇总
title: Django学习笔记 catalog: true subtitle: 11. Django_Error汇总 date: 2018-12-14 10:17:28 --- Django的Er ...
- BZOJ 1060: [ZJOI2007]时态同步 树上问题 + 贪心
Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...
- 子元素设置margin-top作用到了父元素
子元素设置margin-top,父元素也受影响 解决办法:给父元素加个padding或border或overflow:hidden或父元素加前置内容生成 CSS中盒模型的理解