设一个学生的信息包括学号、姓名、出生日期和性别等。把n个学生的信息放入一个集合中,可以根据学号对学生信息进行检索,并且可以根据出生日期对学生进行排序输出。

设一个学生的信息包括学号、姓名、出生日期和性别等。把n个学生的信息放入一个集合中,可以根据学号对学生信息进行检索,并且可以根据出生日期对学生进行排序输出。
要求
对于每个学生的个人信息,可以定义一个类来表示,命名为Student.其每个对象表示一个学生。题目要求按照学号对学生进行检索,这样可以以学号为键值,把学生的信息保存到一个Map中,出生日期可以用Date类表示。
为了完成检索和排序功能,定义一个工具类StuManager,在其中定义如下几个函数:
(1)初始化学生信息函数。
(2)检索学生信息函数。
(3)按照出生日期对学生进行排序函数。

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.TreeMap;
/*定义学生类*/
public class Student {
	int id;		//学号
	
	String gender;		//性别
	Date birth;			//生日
	String name;		//姓名	
	public Student(int id,String name,String gender,Date birth) {
		this.id=id;
		this.name=name;
		this.gender=gender;
		this.birth=birth;
	}
	public String toString() {
		return id+"-"+name+"-"+gender+"-"+birth;		//返回个人信息
	}
}

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.TreeMap;
/*定义学生管理类*/
public class StuManager {
	int STU_NUM=10;
	TreeMap stuList=new TreeMap();	//初始化学生信息
	void iniStudents() {
		for(int i=0;i<STU_NUM;i++) {
			int id=i;
			String name="name"+(int)(Math.random()*1000);	//随机生成学生姓名
			String gender="女";
			if(i%2==0) {
				gender="男";
			}
			Date birth=new Date(new Date().getTime()+(long)(Math.random()*1000000000000l));
			//随机生成学生日期
			Student stu=new Student(id,name,gender,birth);
			stuList.put(id, stu);
		}
	}
	Student searchByID(int id) {
		Student stu=(Student)stuList.get(id);
		return stu;
	}
	//按照日期排序使用冒泡法
	List sortStudentByDate() {
		List stus=new ArrayList();
		//把学生加入列表
		stus.addAll(stuList.values());
		//使用冒泡法对学生进行排序
		for(int i=0;i<stus.size();i++) {
			for(int j=0;j<stus.size();j++) {
				Student tmp1=(Student)stus.get(i);
				Student tmp2=(Student)stus.get(j);
				//比较出生日期
				if(tmp1.birth.before(tmp2.birth)) {
					stus.set(i,tmp2);
					stus.set(j,tmp1);
				}
			}
		}
		return stus;
	}
	public static void main(String args[]) {
		StuManager manager=new StuManager();
		manager.iniStudents();
		//随机生成一个学号进行检索
		int id=(int)(Math.random()*10);
		System.out.println("检索学号:"+id);
		Student stu=manager.searchByID(id);
		if(stu==null) {
			System.out.println("未检索到学生信息");
		}else
			System.out.println("检索到的学生信息是:"+stu);
		System.out.println("按日期排序的结果:");
		List l=manager.sortStudentByDate();
		//便利列表进行输出
		for (Iterator iterator=l.iterator();iterator.hasNext();) {
			Student tmp=(Student) iterator.next();
			System.out.println(tmp);
		}
	}
}

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里是一个简单的学生信息管理系统的 C++ 实现,采用了面向对象的编程思想。 首先,我们可以定义一个 Student 类来表示一个学生信息包括学号姓名、年龄、性别出生日期、地址、电话和邮箱等信息: ```cpp #include <string> using namespace std; class Student { public: Student() {} Student(string id, string name, int age, string gender, string birthday, string address, string phone, string email) { this->id = id; this->name = name; this->age = age; this->gender = gender; this->birthday = birthday; this->address = address; this->phone = phone; this->email = email; } string getId() { return id; } string getName() { return name; } int getAge() { return age; } string getGender() { return gender; } string getBirthday() { return birthday; } string getAddress() { return address; } string getPhone() { return phone; } string getEmail() { return email; } private: string id; // 学号 string name; // 姓名 int age; // 年龄 string gender; // 性别 string birthday; // 出生日期 string address; // 地址 string phone; // 电话 string email; // 邮箱 }; ``` 接下来,我们可以计一个菜单,让用户可以选择添加、删除、修改或查询学生信息等操作。例如: ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<Student> students; int choice; while (true) { cout << "请选择操作:" << endl; cout << "1. 添加学生信息" << endl; cout << "2. 删除学生信息" << endl; cout << "3. 修改学生信息" << endl; cout << "4. 查询学生信息" << endl; cout << "5. 退出程序" << endl; cin >> choice; switch (choice) { case 1: addStudentInfo(students); break; case 2: deleteStudentInfo(students); break; case 3: modifyStudentInfo(students); break; case 4: queryStudentInfo(students); break; case 5: return 0; default: cout << "无效的操作,请重新选择。" << endl; break; } } return 0; } ``` 在每个操作函数,我们可以通过向 vector 容器添加、删除、修改或查询 Student 对象来实现对学生信息的增删改查。例如,添加学生信息的函数可以如下实现: ```cpp void addStudentInfo(vector<Student>& students) { string id, name, gender, birthday, address, phone, email; int age; cout << "请输学生信息:" << endl; cout << "学号:"; cin >> id; cout << "姓名:"; cin >> name; cout << "年龄:"; cin >> age; cout << "性别:"; cin >> gender; cout << "出生日期:"; cin >> birthday; cout << "地址:"; cin >> address; cout << "电话:"; cin >> phone; cout << "邮箱:"; cin >> email; Student student(id, name, age, gender, birthday, address, phone, email); students.push_back(student); cout << "添加成功。" << endl; } ``` 其他操作函数的实现类似,只需要根据需要向 vector 容器添加、删除、修改或查询 Student 对象即可。当然,这只是一个简单的示例,实际应用还需要考虑更多的细节和异常情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值