#include<iostream>
#include<stdlib.h>
using namespace std;
class student
{
public:
static void printHeader() {
cout << "学号\t姓名\t出生日期\n";
}
int get_id()
{
return ID;
}
string get_name()
{
return name;
}
void output()
{
cout << ID << "\t" << name << "\t" << birthday << endl;
}
student()
{
}
student(int ID, string name, string birthday = "未知")
{
this->ID = ID;
this->name = name;
this->birthday = birthday;
}
student(string name, string birthday)
{
this->name = name;
this->birthday = birthday;
this->ID = rand();
}
private:
int ID;
string name;
string birthday;
};
#define len 10
class STU
{
private:
student arr[len];
int number = 0;
public:
void c_addstu(string _name, string _birthday)
{
student a(_name, _birthday);
addstu(a);
}
void c_addstu(int _id, string _name, string _birthday)
{
student a(_id, _name, _birthday);
addstu(a);
}
void addstu(student stu)
{
arr[number++] = stu;
}
void deletestu(int id)
{
for (int i = 0; i < number; i++)
{
if (arr[i].get_id() == id)
{
for (int m = i; m < number; m++)
{
arr[m] = arr[m + 1];
}
number--;
cout << "删除成功" << endl;
break;
}
else if (arr[i].get_id() != id && i == number - 1)
{
cout << "未找到该学生" << endl;
}
}
}
void findstu_id(int id)
{
for (int i = 0; i < number; i++)
{
if (arr[i].get_id() == id)
{
cout << "寻找id成功! 学生信息如下" << endl;
student::printHeader();
arr[i].output();
break;
}
else if (arr[i].get_id() != id && i == number - 1)
{
cout << "未找到该学生" << endl;
}
}
}
void findstu_name(string _name)
{
for (int i = 0; i < number; i++)
{
if (arr[i].get_name() == _name)
{
cout << "寻找姓名成功! 学生信息如下 " << endl;
student::printHeader();
arr[i].output();
break;
}
else if (arr[i].get_name() != _name && i == number - 1)
{
cout << "未找到该学生" << endl;
}
}
}
void print()
{
student::printHeader();
for (int i = 0; i < number; i++) {
arr[i].output();
}
}
};
void menu()
{
cout << "*******************************" << endl;
cout << "********1.添加学生信息*********" << endl;
cout << "*****2.添加学生(姓名生日)****" << endl;
cout << "********3.学号查找学生*********" << endl;
cout << "********4.姓名查找学生*********" << endl;
cout << "********5.显示全部学生*********" << endl;
cout << "*****6.根据id删除学生信息******" << endl;
cout << "******** 0.退出 *********" << endl;
cout << "*******************************" << endl;
}
void func()
{
STU St;
int x;
do
{
menu();
cout << "请选择->" << "";
cin >> x;
switch (x)
{
case 1:
{
int _id;
string _name;
string _birthday;
cout << "请输入学生信息(学号 姓名 出生日期)-》" << endl;
cin >> _id;
cin >> _name;
cin >> _birthday;
St.c_addstu(_id, _name, _birthday);
cout << "添加成功!" << endl;
break;
}
case 2:
{
int _id;
string _name;
string _birthday;
cout << "请输入学生信息(姓名 出生日期)-》" << endl;
cin >> _name;
cin >> _birthday;
St.c_addstu(_name, _birthday);
cout << "添加成功!" << endl;
break;
}
case 3:
{
int y;
cout << "请输入要寻找学生的学号-》" << endl;
cin >> y;
St.findstu_id(y);
break;
}
case 4:
{
string z;
cout << "请输入要寻找学生的姓名-》" << endl;
cin >> z;
St.findstu_name(z);
break;
}
case 5:
{
cout << "学生名单如下" << endl;
St.print();
break;
}
case 6:
{
int z;
cout << "请输入要删除学生的id-》" << endl;
cin >> z;
St.deletestu(z);
break;
}
case 0:
{
cout << "退出成功" << endl;
break;
}
default:
{
cout << "输入错入 请重新按菜单输入" << endl;
break;
}
}
} while (x);
}
int main()
{
func();
}
C++类和对象的基本应用
1.创建一个学生类,包含三个私有成员变量,分别为学号、姓名、出生年月,一个成员函数输出以上三个成员变量;两个构造函数,一个构造函数包含三个字段,一个只有姓名和出生年月,学号系统自动产生。
2.再创建一个学生管理类,包含一个学生对象数组,保存创建的学生对象;三个成员函数,一个是根据姓名出生年月创建学生对象并添加到学生对象数组中,一个是将学生对象直接添加到学生数组中,第三个通过循环方式打印输出所有学生对象,每个学生的信息一行。
3.在学生管理类中添加根据学号删除学生与根据学号查询学生信息;根据学生姓名查询学生信息;在学生类中添加静态函数,输出学生类的表头(学号、姓名、出生年月)。
4.要求学生信息通过交互方式录入。