首页 > 分享 > 北大自考java上机

北大自考java上机

1、Annie的宠物小屋里有12个笼子,每个笼子可以放不同的动物,包括猫,狗和蛇,但同一时刻一个笼子只能放0只或1只宠物,本题要求完成:

(1)实现一个简单的管理系统,可以增加,删除指定笼子中的宠物,查询每个笼子中存放宠物的情况,统计宠物的种类和数量。

(2)定义描述宠物小屋的类Shelves,其中包括12个笼子用于存放各种宠物;

(3)定义虚拟基类Animal,至少包含纯虚函数Showme;

(4)定义派生类Cat,Dog,Snake,具体实现上述纯虚函数showme,显示该宠物的种类,名称,着色,体重和喜欢的食物。

(5)重载输入>>操作符,使得可以通过cin直接读入宠物的着色,体重,和喜欢的食物;

(6)编写main函数,测上述所要求的各种功能;

Main.cpp

#include

#include“animal.h”

using std::cout;

using std::cin;

using std::endl;

int main()

{

Shelves * shelves=new Shelves;

Cat *cat;

Dog *dog;

Snake *snake;

int n;

int i=0;

char ch;

while(i!=5)

{

cout<

cout<

cout<

cout<

cout<

cout<

cin>>i;

switch(i)

{

case 1:

cout<

cin>>n;

cout<

cout<

cin>>ch;

switch(ch)

{

case'c':

cat=new Cat;

cin>>*cat;

if(!shelves ->add(n,cat))

cat->deleteme();

break;

case'd':

dog=new Dog;

cin>>*dog;

if(!shelves->add(n,dog))

dog->deleteme();

break;

case's':

snake=new Snake;

cin>>*snake;

if(!shelves->add(n,snake))

snake->deleteme();

break;

default:

cout<

break;

}

break;

case 3:

cout<

cin>>n;

shelves->query(n);

break;

case 2:

cout<

cin>>n;

shelves->Delete(n);

break;

case 4:

shelves->stat();

break;

case 5:

break;

}

}

return 0;

}

Animal.h

#ifndef ANIMAL_H

#define ANIMAL_H

#include

class Animal

{

public:

virtual void showme()=0;

virtual void deleteme()=0;

~Animal(){}

protected:

char *name ;

char *color;

float weight;

char *food;

int type;

};

class Cat:public Animal

{

public:

Cat();

void showme();

static int number();

friend std::istream & operator >>(std::istream & is,Cat &cat);

void deleteme();

~Cat();

private:

static int Catnum;

};

class Dog:public Animal

{

public:

Dog();

void showme();

static int number();

friend std::istream & operator>>(std::istream & is,Dog &dog);

void deleteme();

~Dog();

private:

static int Dognum;

};

class Snake:public Animal

{

public:

Snake();

void showme();

static int number();

friend std::istream & operator>>(std::istream & is ,Snake &snake);

void deleteme();

~Snake();

private:

static int Snakenum;

};

class Shelves

{

public:

Shelves();

int add(int n,Animal *animal);

void Delete(int n);

void query(int n);

void stat();

private:

Animal * shelves[12];

};

#endif

Animal.cpp

#include

#include“animal.h”

using std::cout;

using std::cin;

using std::endl;

int Cat::Catnum=0;

Cat::Cat()

{

type=0;

weight=0;

name=new char[20];

color =new char [20];

food=new char [20];

Catnum++;

}

void Cat::showme()

{

cout<

cout<

cout<

cout<

cout <

return ;

}

int Cat::number()

{

return Catnum;

}

std::istream & operator>>(std::istream & is ,Cat &cat)

{

cout<

is>>cat.name;

cout<

is>>cat.color;

cout<

is>>cat.weight;

cout<

cin>>cat.food;

return is;

}

void Cat::deleteme()

{

Catnum——;

}

Cat::~Cat()

{

}

int Dog::Dognum=0;

Dog::Dog()

{

type=1;

name=new char [20];

color =new char [20];

food=new char [20];

weight=0;

Dognum++;

}

void Dog::showme()

{

cout<

cout<

cout<

cout<

cout<

return ;

}

int Dog::number()

{

return Dognum;

}

std::istream & operator>>(std::istream &is ,Dog &dog)

{

cout<

is>>dog.name;

cout<

is>>dog.color;

cout<

is>>dog.weight;

cout<

is>>dog.food;

return is;

}

void Dog::deleteme()

{

Dognum——;

}

Dog::~Dog()

{}

int Snake::Snakenum=0;

Snake::Snake()

{

type=2;

name=new char [20];

color=new char [20];

food=new char [20];

Snakenum++;

}

void Snake::showme()

{

cout<

cout<

cout<

cout<

cout<

return ;

}

int Snake::number()

{

return Snakenum;

}

std::istream & operator>>(std::istream &is ,Snake &snake)

{

cout<

is>>snake.name;

cout<

is>>snake.color;

cout<

is>>snake.weight;

cout<

is>>snake.food;

return is;

}

void Snake::deleteme()

{

Snakenum——;

}

Snake::~Snake()

{}

Shelves::Shelves()

{

for(int i=0;i<12;i++)

{

shelves[i]=NULL;

}

}

int Shelves::add(int n,Animal * animal)

{

int successful=1;

if(shelves[n]!=NULL)

{

cout<

successful=0;

return successful;

}

shelves[n]=animal;

cout<

return successful;

}

void Shelves::query(int n)

{

if(shelves[n]==NULL)

{

cout<

return ;

}

shelves[n]->showme();

return ;

}

void Shelves::Delete(int n)

{

if(shelves[n]==NULL)

{

cout<

return ;

}

shelves[n]->deleteme();

shelves[n]=NULL;

cout<

return ;

}

void Shelves::stat()

{

cout<

<

<

return ;

}

2、请实现一个简单的银行储蓄系统,承担活期用户的存款和取款业务,要求如下:

(1) 实现描述银行的类Bank,记录系统中现有哪些储户,(可用数组实现但注意越界),定义了生成储户的函数append,按照账户删除储户的函数Delete,按账号查询储户的函数query,并显示结果。

(2)定义储户类Account,具有属性账号,存款人姓名和余额,操作saving withdraw和showme.

函数saving 存储业务,函数withdraw处理取款业务,(余额不足时不予以取并给提示信息),showme函数显示储户所有信息。

(3)编写main函数,测试上述所要求的各种功能,即可以根据菜单命令增加,删除,和查询储户,以及储户存款和取款操作。

Main.cpp

#include

#include“bank.h”

using std::cout;

using std::cin;

using std::endl;

int main()

{

Bank bank;

int choice=0;

cout<

while(choice!=4)

{

cout<

cout<

cout<

cout<

cout<

cin >>choice;

switch(choice)

{

case 1:

bank.append();

break;

case 2:

bank.deletes();

break;

case 3:

bank.query();

break;

case 4:

break;

}

}

return 0;

}

Bank.h

#ifndef BANK_H

#define BANK_H

class Account

{

public:

Account();

Account(int ,const char *,double);

void saving();

int withdrow();

void showme();

int getID();

private:

int ID;

char *name;

double balance;

};

class Bank

{

public:

Bank();

void append();

void deletes();

void query();

private:

Account *account[50];

int maxID;

int accnum;

};

#endif

Bank.cpp

#include

#include

#include“bank.h”

using std::cout;

using std::cin;

using std::endl;

Account::Account()

{

ID=0;

strcpy(name,“”);

balance=0;

}

Account::Account(int id,const char *names,double balances)

{

ID=id;

name=new char[50];

strcpy(name,names);

balance=balances;

}

void Account::saving()

{

double number;

cout<

cin>>number;

balance=balance+number;

cout<

return ;

}

int Account::withdrow()

{

double number;

cout<

cin>>number;

if(balance

{

cout<

cout<

return 0;

}

balance =balance-number;

cout<

return 1;

}

void Account::showme()

{

cout<

cout<

cout<

return ;

}

int Account::getID()

{

return ID;

}

Bank::Bank()

{

for(int i =0;i<50;i++)

account[i]=NULL;

maxID=0;

accnum=0;

}

void Bank::append()

{

if(accnum==50)

{

cout<

return ;

}

int id;

char *names=new char [50];

double balance;

cout<

cin>>names;

id=maxID;

balance=0;

Account *acc=new Account(id,names,balance);

account[accnum]=acc;

cout<

account[accnum]->showme();

maxID++;

accnum++;

return ;

}

void Bank::deletes()

{

int ID;

cout<

cin>>ID;

int flag=1;

int i=0;

while ((i

{

if(ID==account[i]->getID())

{

flag=0;

}

else

{

i++;

}

}

if(flag)

{

cout<

}

else{

for( int j=i;j

{

account[j]=account[j+1];

}

delete account[accnum-1];

accnum——;

cout<

}

return ;

}

void Bank::query()

{

int ID;

cout<

cin>>ID;

int flag=1;

int i=0;

while((i

{

if(ID==account[i]->getID())

flag=0;

else

i++;

}

if(flag)

cout<

else

{

account[i]->showme();

int choice =0;

while (choice!=3)

{

cout<

cout<

cout<

cout<

cin>>choice;

cout<

switch( choice)

{

case 1:

account[i]->saving();

break;

case 2:

account[i]->withdrow();

break;

case 3:

break;

}

}

}

return ;

}

3、(1)定义基类MYgraph,至少包含纯虚函数 Area,计算图形面积。

(2)从基类MYgraph中派生圆形类MYcircle和矩形类MYrectangle,其中圆形信息包括圆形半径

和圆心,矩形信息包括矩形的长和宽,具体实现上述纯虚函数Area,计算圆形和矩形的面积。

(3)重载输入>>操作符,使得可以通过cin 直接读入上述圆形类和矩形类的对象值。

(4)编定main 函数,测试上述所要求的各种功能,即可以读入圆或矩形的对象值,计算读入图形的面积并显示。

Main.cpp

#include“string.h”

#include

int main()

{mycircle circle;

myrectangle rectangles;

std::cin>>circle;

std::cout<

std::cin>>rectangles;

std::cout<

return 0;

}

String.h

#ifndef STRING_H

#define STRING_H

#include

#include

using std::istream;

class graphy

{

public:

virtual double area()=0;

};

class mycircle:graphy

{

public:

mycircle();

double area();

friend istream &operator >>(istream & is,mycircle &circle);

private:

int centerx;

int centery;

int radius;

};

class myrectangle :graphy

{

public:

myrectangle();

double area();

friend istream &operator >>(istream & is ,myrectangle &rectangle);

private:

int length;

int width;

};

#endif

String.cpp

#include

#include

#include“string.h”

//using std::istream;

mycircle ::mycircle()

{

centerx=0;

centery=0;

radius=0;

}

double mycircle::area()

{

double area;

area=3.14*radius*radius;

return area;

}

istream &operator >>(istream & is,mycircle &circle)

{

std::cout<

is>>circle.centerx;

std::cout<

is>>circle.centery;

std::cout<

is>>circle.radius;

return is;

}

myrectangle ::myrectangle()

{

length=0;

width=0;

}

double myrectangle::area()

{

double area;

area=length*width;

return area;

}

istream &operator >>(istream &is ,myrectangle& rectangle)

{

std::cout<

is>>rectangle.length;

std::cout<

is>>rectangle.width;

return is;

}

4、(1) 实现描述栈的类Stack ,其中定义了栈的大小size,(即栈中元素的个数),并包括进栈函数Push

,出栈函数Pop和显示栈顶元素的函数Top,(自已定义了一个gettop函数)。

(2)定义基类element,至少包含纯虚函数showme;

(3)从基类element中派生整数类MYinteger和字符串类mystring,具体实现上述纯虚函数showme,

显示该元素的类型和相应值。

(3)重载“>>”操作符,使得可以通过cin直接读入上述整数类和字符类的对象值。

编定main 测试以上功能

Main.cpp

#include“stack.h”

#include

using std::cout;

using std::cin;

int main()

{

int i=0;

integer *myint;

mystring *mystrings;

stack* stack1=new stack;

while(i!=6){

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cin>>i;

switch(i)

{

case 1:

myint=new integer;

cin>>*myint;

stack1->push(myint);

break;

case 2:

mystrings =new mystring;

cin>>*mystrings;

stack1->push(mystrings);

break;

case 3:

stack1->pop();

break;

case 4:

stack1 ->top();

break;

case 5:

stack1->gettop();

break;

case 6:

break;

}

}

return 0;

}

Stack.h

#ifndef STACK_H

#define STACK_H

#include

class element

{

public:

virtual void showme()=0;

};

class integer:public element

{

public:

integer();

void showme();

friend std::istream &operator>>(std::istream & is,integer &myint);

protected:

int myint;

};

class mystring:public element

{

public:

mystring();

void showme();

friend std::istream &operator>>(std::istream &is,mystring &myster);

protected:

char *mystr;

};

class stack

{

public:

stack();

void push(element *myele);

void pop();

void top();

void gettop();

private:

element *stacks[5];

int size;

};

#endif

Stack.cpp

#include

#include“stack.h”

using std::cout;

using std::cin;

integer::integer()

{

myint=0;

}

void integer::showme()

{

cout<

}

std::istream &operator>>(std::istream & is,integer &myint)

{

cout<

return is>>myint.myint;

}

mystring::mystring()

{

mystr=“”;

}

void mystring::showme()

{

cout<

}

std::istream & operator>>(std::istream &is,mystring &myster)

{

cout<

myster.mystr=new char [20];

return is>>myster.mystr;

}

stack::stack()

{

size =0;

for(int i=0;i<5;i++)

{

stacks[i]=NULL;

}

}

void stack::pop()

{

if(size==0)

{

cout<

return ;

}

for (int i=0;i

{

stacks[i]=stacks[i+1];

}

stacks[size-1]=NULL;

size——;

return ;

}

void stack::top()

{

if(size ==0)

{

cout<

return ;

}

stacks[0]->showme();

return ;

}

void stack::push(element *myele)

{

if(size==5)

{

cout<

return ;

}

for (int i=size;i>0;i——)

stacks[i]=stacks[i-1];

stacks[0]=myele;

size++;

return ;

}

void stack::gettop()

{

void top();

void pop();

return ;

}

相关知识

北大自考java上机
自考吧
安徽自考
四川师范大学自考专业自考本科学前教育专业介绍
深圳自考报名
社区护理学自考第八章
宠物医生怎么自考
想知道自考专科专业大全?
自考宠物美容师证到哪里考.自考宠物美容师证到哪里考试
宠物医生可以自考吗(成人自考动物医学专业)

网址: 北大自考java上机 https://m.mcbbbk.com/newsview1342398.html

所属分类:萌宠日常
上一篇: 蛇喂食及投喂方法
下一篇: 茶盏留香:猎奇的代价:当宠物逾越