关于信息学奥林匹克竞赛问题

关于信息学奥林匹克竞赛问题,第1张

吴文虎的《程序设计基础》,在清华大学可买到,很不错的一本书!

//////////

书店应该也有。

//////////

经过我的查询证实,卓越上有。

>

是大三的,

程序设计基础(C语言)(第2版)》是由张先伟、马新娟、张立红、王云、田爱奎编著,2016年清华大学出版社出版的21世纪高等学校计算机专业实用规划教材。 该教材可作为高等院校相关专业教材,亦可供从事计算机相关领域的科研人员参考自学。

#include<iostream>

#include<fstream>

#include<string>

#include<cstring>

using namespace std;

class Student{ //学生

private:

string number; //学号

string name; //姓名

int age; //年龄

char sex; //性别

string grade; //班级

public:

Student(); //无参构造

Student(string Num,string Nam,int Age,char Sex,string Gra):number(Num),name(Nam),age(Age),sex(Sex),grade(Gra){}//有参构造

~Student(){} //析构

virtual void Display(); //显示学生信息

virtual void Add(); //声明新增学生对象的函数

virtual int FindRevise(string str) {if(str==number) return 1;else return 0;}

void Setname(string str) {name=str;} //修改姓名

void SetGrade(string str) {grade=str;} //修改班级

};

Student::Student(){ //定义学生类无参构造函数

number="001";

name="Zhangsan";

age=18;

sex='M';

grade="One";

}

void Student::Display(){ //定义显示学生信息函数

cout<<"学号:"<<number<<endl;

cout<<"姓名:"<<name<<endl;

cout<<"年龄:"<<age<<endl;

cout<<"性别:"<<sex<<endl;

cout<<"年级:"<<grade<<endl;

}

void Student::Add(){ //定义增加学生信息函数

cout<<"请输入"<<endl;

cout<<"学号:";cin>>number;

cout<<"姓名:";cin>>name;

cout<<"年龄:";cin>>age;

cout<<"性别:";cin>>sex;

cout<<"年级:";cin>>grade;

}

class Undergrade:public Student{ //本科生类,继承了学生类

private:

double score1; //成绩1

double score2; //成绩2

double score3; //成绩3

double score4; //成绩4

Student monitor; //班长(学生类)

public:

Undergrade(); //无参构造

Undergrade(string Num,string Nam,int Age,char Sex,string Gra,double s1,double s2,double s3,double s4,Student Mon):Student(Num,Nam,Age,Sex,Gra){

score1=s1;

score2=s2;

score3=s3;

score4=s4;

monitor=Mon;

}//有参构造

virtual void Display_monitor();//定义显示班长信息函数

~Undergrade(){} //析构

void Display();//声明显示本科生类学生信息函数

void Add(); //声明新增本科类学生的函数

virtual void AddMon();//声明增加班长信息的函数

int FindRevise(string str); //用于查找判断该学号是否为该学生 str为学号

void Revise(int n); //修改学生信息,n为需要修改的信息(详细见ReviseMenu)

};

Undergrade::Undergrade(){ //定义本科生类学生无参构造函数

score1=100;

score2=100;

score3=100;

score4=100;

Student t;

monitor=t;

}

void Undergrade::Display_monitor(){ //定义显示本科生信息函数

monitorDisplay();

}

void Undergrade::Display(){ //定义显示本科生信息函数

Student::Display();

cout<<"成绩1:"<<score1<<endl;

cout<<"成绩2:"<<score2<<endl;

cout<<"成绩3:"<<score3<<endl;

cout<<"成绩4:"<<score4<<endl;

cout<<"班长:"<<endl;

Display_monitor();

}

void Undergrade::AddMon(){ //定义增加班长信息的函数

monitorAdd();

}

void Undergrade::Add(){ //定义增加本科生信息函数

Student::Add();

cout<<"成绩1:";cin>>score1;

cout<<"成绩2:";cin>>score2;

cout<<"成绩3:";cin>>score3;

cout<<"成绩4:";cin>>score4;

cout<<"班长:"<<endl;

AddMon();

}

int Undergrade::FindRevise(string str){//用于查找判断该学号是否为该学生 str为学号

if(Student::FindRevise(str)) return 1;

else return 0;

}

void Undergrade::Revise(int n){ //修改学生信息 n为修改的具体类型(详情见ReviseMenu)

string str;

switch(n){

case 1:{

cout<<"请输入新姓名:";cin>>str;

Student::Setname(str);

break;

}

case 2:{

cout<<"请输入新班级:";cin>>str;

Student::SetGrade(str);

break;

}

}

}

class Graduate:public Student{//研究生类

private:

double scoreA; //成绩a

double scoreB; //成绩b

Student monitor; //班长(学生类)

string res_direction;//研究方向

string res_teacher; //研究导师

double pay;//工资

public:

Graduate(); //无参构造

Graduate(string Num,string Nam,int Age,char Sex,string Gra,double A,double B,Student Mon,string Dir,string Tea,double Pay):Student(Num,Nam,Age,Sex,Gra){

scoreA=A;

scoreB=B;

monitor=Mon;

res_direction=Dir;

res_teacher=Tea;

pay=Pay;

}//有参构造

void Display_monitor();//声明显示班长信息函数

~Graduate(){} //析构

void Display();//声明显示研究生类学生信息函数

void Add();//新增学生信息

void AddMon();//新增班长信息

int FindRevise(string str);//用于查找判断该学号是否为该学生 str为学号

void Revise(int n);//修改学生信息 n为修改的具体类型(详情见ReviseMenu)

};

Graduate::Graduate(){ //定义研究生类学生无参构造函数

scoreA=100;

scoreB=100;

Student t;

monitor=t;

res_direction="Zhang";

res_teacher="Zhang";

pay=999;

}

void Graduate::Display_monitor(){ //定义显示班长信息函数

monitorDisplay();

}

void Graduate::Display(){ //定义显示研究生信息函数

Student::Display();

cout<<"成绩A:"<<scoreA<<endl;

cout<<"成绩B:"<<scoreB<<endl;

cout<<"班长:"<<endl;

Display_monitor();

cout<<"研究方向:"<<res_direction<<endl;

cout<<"研究导师:"<<res_teacher<<endl;

cout<<"工资:"<<pay<<endl;

}

void Graduate::AddMon(){//定义增加班长信息的函数

monitorAdd();

}

void Graduate::Add(){ //定义增加研究生信息函数

Student::Add();

cout<<"成绩A:";cin>>scoreA;

cout<<"成绩B:";cin>>scoreB;

cout<<"班长:"<<endl;

AddMon();

cout<<"研究方向:";cin>>res_direction;

cout<<"研究导师:";cin>>res_teacher;

cout<<"工资:";cin>>pay;

}

int Graduate::FindRevise(string str){//用于查找判断该学号是否为该学生 str为学号

if(Student::FindRevise(str)) return 1;

else return 0;

}

void Graduate::Revise(int n){ //修改学生信息 n为修改的具体类型(详情见ReviseMenu)

string str;

switch(n){

case 1:{

cout<<"请输入新姓名:";cin>>str;

Student::Setname(str);

break;

}

case 2:{

cout<<"请输入新班级:";cin>>str;

Student::SetGrade(str);

break;

}

}

}

void MainMenu() //主菜单

{

cout<<"\n\t学 生 管 理 系 统";

cout<<"\n\n";

cout<<" \t1添加新本科类学生\n";

cout<<" \t2添加新研究生类学生\n";

cout<<" \t3显示本科类学生信息\n";

cout<<" \t4显示研究生类学生信息\n";

cout<<" \t5修改本科类学生信息\n";

cout<<" \t6修改研究生类学生信息\n";

cout<<" \t7删除本科类学生信息\n";

cout<<" \t8删除研究生类学生信息\n";

cout<<" \t9\n";

cout<<" \t10\n";

cout<<"\n\n";

cout<<"请选择:";

}

void ReviseMenu() //定义修改学生信息的函数

{

cout<<"\n\n";

cout<<"1修改姓名\n";

cout<<"2修改班级";

cout<<"\n\n";

cout<<"请选择:";

}

int main()

{

Undergrade UndGra[100]; //定义本科生对象数组

int UndGraVis[100];//用于判断本科生是否存在

Graduate Gra[100]; //定义研究生对象数组

int GraVis[100];//用于判断研究生是否存在

int i,UndGraPeo=1,GraPeo=1,a[2];

memset(UndGraVis,1,sizeof(UndGraVis));

memset(GraVis,1,sizeof(GraVis));

while(1)

{

MainMenu();

int c;

cin>>c;

cout<<endl;

switch(c)

{

case 1:{//新增本科生

UndGra[UndGraPeo]Add();

cout<<"已成功添加!"<<endl;

UndGraPeo++;

break;

}

case 2:{//新增研究生

Gra[GraPeo]Add();

cout<<"已成功添加!"<<endl;

GraPeo++;

break;

}

case 3:{//显示本科生

if(UndGraPeo==1) cout<<"无记录!\n";

else{

for(i=1;i<UndGraPeo;i++){

if(!UndGraVis[i]) continue;

UndGra[i]Display();

cout<<endl;

}

}

break;

}

case 4:{//显示研究生

if(GraPeo==1) cout<<"无记录!\n";

else{

for(i=1;i<GraPeo;i++){

if(!GraVis[i]) continue;

Gra[i]Display();

cout<<endl;

}

}

break;

}

case 5:{//修改本科生信息

ReviseMenu();

int n; cin>>n;

string str;

int num=0;

cout<<"请输入该学生学号:";cin>>str;

for(i=1;i<UndGraPeo;i++){

if(UndGra[i]FindRevise(str)) {num=i;break;}

}

if(num==0||!UndGraVis[num]) {cout<<"输入错误!"<<endl;break;} //未找到该学生

else UndGra[num]Revise(n);

cout<<"修改成功!"<<endl;

break;

}

case 6:{//修改研究生信息

ReviseMenu();

int n; cin>>n;

string str;

int num=0;

cout<<"请输入该学生学号:";cin>>str;

for(i=1;i<GraPeo;i++){

if(Gra[i]FindRevise(str)) {num=i;break;}

}

if(num==0||!GraVis[num]) {cout<<"输入错误!"<<endl;break;}

else Gra[num]Revise(n);

cout<<"修改成功!"<<endl;

break;

}

case 7:{//删除本科生信息

string str;

int num=0;

cout<<"请输入该学生学号:";cin>>str;

for(i=1;i<UndGraPeo;i++){

if(UndGra[i]FindRevise(str)) {num=i;break;}

}

if(num==0||!UndGraVis[num]) {cout<<"输入错误!"<<endl;break;} //未找到该学生

else UndGraVis[num]=0;

cout<<"已删除!"<<endl;

break;

}

case 8:{//删除研究生信息

string str;

int num=0;

cout<<"请输入该学生学号:";cin>>str;

for(i=1;i<GraPeo;i++){

if(Gra[i]FindRevise(str)) {num=i;break;}

}

if(num==0||!GraVis[num]) {cout<<"输入错误!"<<endl;break;} //未找到该学生

else GraVis[num]=0;

cout<<"已删除!"<<endl;

break;

}

default:cout<<"输入错误!\n";

}

}

return 0;

}

这可绝对可用 我们刚刚 做完这个

以上就是关于关于信息学奥林匹克竞赛问题全部的内容,包括:关于信息学奥林匹克竞赛问题、数据结构课程设计报告 树的遍历:文件目录结构的显示、NOIP买书的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9268093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存