C++学习:学生信息管理系统,类的例子

参考:面向 对象程序设计及C++,P69

共3个文件,书上代码编译不通过,已修改

主要是将全局变量count改在main中定义,函数中使用引用

// excise_20230808e.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include "Student.h"
const int N = 10;
//int  count = 0;

void menu();
void OutputStu(Student* array, int& count);
void InputStu(Student* array, int& count);
int SearchStu(Student* array, string na,  int& count);

int main()
{
	Student array[N];		//定义学生数组
	int choice;
	string na;
	int cnt = 0;			//用于计数
	do
	{
		menu();
		cout << "输入你的选择" << endl;
		cin >> choice;
		switch(choice)
		{
		case 1:
			InputStu(array, cnt); 
			break;
		case 2:
			cout << "输入查找的姓名" << endl;
			cin >> na;
			int i;
			i = SearchStu(array, na, cnt);
			if (i == N)
				cout << "查无此人" << endl;
			else
				array[i].Dislay();	//显示
			break;
		case 3:
			OutputStu(array,cnt);
			break;
		case 0:
			cout << "再见" << endl;
			break;
		default:
			cout << "输入错误" << endl;
			break;


		}

	} while (choice);

    std::cout << "Hello World!\n"; 
}
void menu()		//菜单
{
	cout << "*********1.录入信息**********" << endl;
	cout << "*********2.查询信息**********" << endl;
	cout << "*********3.浏览信息**********" << endl;
	cout << "*********4.退    出**********" << endl;
}
void OutputStu(Student* array,int& count)
{
	cout << "学生总人数=" << count << endl;
	for (int i = 0; i < count; i++)
		array[i].Dislay();
}
void InputStu(Student* array, int &count)	//输出数组元素
{
	char ch;
	do
	{
		array[count].input();	//输入一个学生对象
		count++;
		cout << "继续输入吗?(Y/N)"<<endl;
		cin >> ch;
	} while ((ch == 'Y') ||( ch == 'y'));


}
int SearchStu(Student* array, string na,int &count)
{
	int  j = N;
	for (int i = 0; i < count; i++)
		if (array[i].GetName() == na)
			j = i;
	return j;
}
#pragma once 

#include <iostream>
#include <string>
using namespace std;
class Student
{
private:
	string name;		//姓名
	string ID;			//身份证号
	string number;		//学号
	string speciality;	//专业
	int age;			//年龄
public:
	Student();			//无参构造函数
	Student(string na, string id, string num, string spec, int ag);//有参构造函数
	Student(const Student& per);		//复制构造函数
	string GetName();
	string GetID();
	string GetNumber();
	string GetSpec();
	int GetAge();
	void Dislay();		//显示学生信息
	void input();		//输入学生信息
	~Student();
};

#include "Student.h"



Student::Student()
{
	name = " ";
	age = 0;
}


Student::~Student()
{
}
Student::Student(string na, string id, string num, string spec,
	int age):name(na),ID(id),number(num),speciality(spec),age(age)
	//有参构造函数
{

}
Student::Student(const Student& per)		//复制构造函数
{
	name = per.name;
	ID = per.ID;
	number = per.number;
	speciality = per.speciality;
	age = per.age;
}
string Student::GetName()		//提取姓名
{
	return name;
}
string Student::GetID()
{
	return ID;
}
string Student::GetNumber()
{
	return number;
}
string Student:: GetSpec()
{
	return speciality;
}
int Student::GetAge()
{
	return age;
}
void Student::Dislay()	//显示学生信息
{
	cout << "姓名:" << name << endl;
	cout << "身份证:" << ID << endl;
	cout << "学号:" << number << endl;
	cout << "专业:" << speciality << endl;
	cout << "年龄:" << age << endl;

}
void Student::input()		//输入学生信息
{
	cout << "姓名:" <<  endl;
	cin >> name;
	cout << "身份证:" << endl;
	cin >> ID;
	cout << "学号:" << endl;
	cin >> number;
	cout << "专业:" <<  endl;
	cin >> speciality;
	cout << "年龄:" <<  endl;
	cin >> age;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值