📄 main.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
class student //学生类的声明
{
private:
char name[20];
int score;
static int sum; //静态私有成员,实现计数
public:
student();
void set_inf(char *n, int s);
void print();
int get_s();
void set_sum();
};
int student::sum=0; //静态私有成员的外部初始化
student::student() //构造函数,实现计数的自增!!
{
strcpy(name,"Null");
score=0;
sum++;
}
void student::print()
{cout << "姓名:\t" << name << "\t分数:\t" << score << endl;}
void student::set_inf(char *n, int s)
{
strcpy(name,n);
score=s;
}
int student::get_s() {return sum;}
void student::set_sum() {sum++;}
class teacher //教师类的声明
{
private:
char name[20];
char pro[30];
static int sum;
public:
teacher();
void set_inf(char *n, char *p);
void print();
int get_s();
void set_sum();
};
int teacher::sum=0;
teacher::teacher() //构造函数,实现计数的自增!!
{
strcpy(name,"Null");
strcpy(pro,"Null");
sum++;
}
void teacher::print()
{cout << "姓名:\t" << name << "\t专业:" << pro << endl;}
void teacher::set_inf(char *n, char *p)
{
strcpy(name,n);
strcpy(pro,p);
}
int teacher::get_s() {return sum;}
void teacher::set_sum(){sum++;}
int jsSum(student s, teacher t) //独立函数,计算老师和学生的总人数,形参类型为自定义类
{
return (s.get_s()+t.get_s());
}
//////////////////////
//////////////////主函数////////////////////////////////////////
void main()
{
cout << "************预定值************" << endl;
student s[5];
s[0].set_inf("Han",80);
s[1].set_inf("Li",90);
s[2].set_inf("Wang",70);
s[3].set_inf("zhang",79);
s[4].set_inf("hu",83);
cout << "学生有:\t" << endl;
for(int i=0; i<5; i++) //输出学生信息
s[i].print();
cout <<"总数:" <<s[0].get_s() << endl;
cout << endl;
teacher t[2];
t[0].set_inf("刘老师","计算机科学与技术");
t[1].set_inf("沈老师","计算机科学与技术");
cout << "老师有:" << endl; //输出教师信息
t[0].print();
t[1].print();
cout <<"总数:" <<t[0].get_s() << endl << endl;
cout <<"老师和学生总人数为"<< jsSum(s[0],t[0]) << "人" << endl; //调用自定义函数计算老师和学生的总人数
cout << "*****************************" << endl<<endl;
/////////////用户增加数据/////////////////////
char input;
student *ps=NULL; //自定义学生类型指针,用来接收动态申请的学生类型数组的首地址,初始化为NULL
teacher *pt=NULL; //自定义老师类型指针,用来接收动态申请的老师类型数组的首地址,初始化为NULL
int snum=0;
int tnum=0;
ps=new student[snum]; //动态申请的学生类型数组
if(ps==NULL)
{
cout << "内存不足,程序异常终止" << endl;
exit(0);
}
pt=new teacher[tnum]; //动态申请的老师类型数组
if(pt==NULL)
{
cout << "内存不足,程序异常终止" << endl;
exit(0);
}
for(int temp=0; ;temp++)
{
cout << "是否增加数据, Y or N?" <<endl;
cin >> input;
if(input=='Y' || input=='y')
{
char name[20]; //存放输入的姓名
int score; //存放学生成绩
char program[50]; //存放教师专业
cout << "老师(t)还是学生(s)?" << endl;
cin >> input;
if(input=='T' || input=='t')
{
cout << "输入老师人数" << endl;
cin >> tnum;
for(int tp=0;tp<tnum;tp++)
{
cout << "输入姓名和专业:" << endl;
cin >> name >> program;
(*(pt+tp)).set_inf(name,program); //指针类对象调用类的公有成员函数
(*(pt+tp)).set_sum();
}
}
if(input=='s' || input=='S')
{
cout << "输入学生人数" << endl;
cin >> snum;
for(int tp=0;tp<snum;tp++)
{
cout << "输入姓名和成绩:" << endl;
cin >> name >> score;
(*(ps+tp)).set_inf(name,score);
(*(ps+tp)).set_sum();
}
}
}
else if(input=='n' || input=='N')
break;
}
////////////输出所有信息,包含预定义和用户增加的数据
cout << "**************************" << endl;
cout << "学生有:\t" << endl;
for(i=0; i<5; i++)
s[i].print();
for(int tp=0;tp<snum;tp++)
(*(ps+tp)).print();
cout <<"总数:" <<s[0].get_s() << endl;
cout << endl;
cout << "老师有:" << endl;
for( i=0; i<2; i++)
t[i].print();
for(tp=0;tp<tnum;tp++)
(*(pt+tp)).print();
cout <<"总数:" <<t[0].get_s() << endl << endl;
cout <<"老师和学生总人数为"<< jsSum(s[0],t[0]) << "人" << endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -