2024年4月28日发(作者:)
实验三 数组与指针实验
【实验目的】
1.学习使用数组数据对象。
2.掌握指针的使用方法。
3.学习通过动态内存分配实现动态数组的定义和使用,并体会指针在其中的作用。
4.掌握静态成员的使用方法。
5.练习通过Debug观察指针的内容及其所指对象的内容。
【实验内容】
1.用对象数组实现一个简单的银行账户管理系统,完成多个用户的开户、存款、取款
和查询余额等行为。
#include
#include
#include
#include
class Account
{
private:
char mName[10]; //银行账户户名
long mSN; //账户帐号
float mBalance; //账户当前的余额
public:
Account(); //无参构造函数
void deposit(); //往账户中存款
int withdraw(); //从账户中取款
void getBalance(); //查询余额
long getmSN()
{return mSN;} //取得客户的帐号
};
Account::Account() //无参构造函数,从键盘输入信息进行初始化
{ cout<<" "<<"请输入:"< cout<<"户名:"< cin>>mName; cout<<"账号:"< cin>>mSN; cout<<"存款:"< cin>>mBalance; } //往账户中存款,存款金额为amount void Account::deposit() { float amount; cout<<"请输入存款金额:"; cin>>amount; mBalance=amount+mBalance; } //从账户中取款,取款金额为amount int Account::withdraw() { cout<<"请输入取款金额:"< float amount; cin>>amount; int c; c=amount>mBalance?0:1; if(amount>mBalance) mBalance=mBalance; else mBalance=mBalance-amount; return(c); } //查询帐户当前余额 void Account::getBalance() { cout<<"账户余额为:"< } //菜单函数 void menu(void) { system("cls"); //清屏 cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"< cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"< cout<<" 简单银行帐户系统"< cout<<"1.存款 "< cout<<"2:取款"< cout<<"3:查询余额 "< cout<<"4:退出 "< cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"< cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"< cout< } //主函数 int main() { int cho,n,r,i,flag=0; long aNo; cout<<"要开的账户数目为:"< cin>>n; Account *p; //定义对象指针 p=new Account[n]; //动态创建对象数组 while(1) { menu(); do { cout<<"请根据菜单进行操作选择:"< cin>>cho; //getch(); //清除键盘缓冲区内容,为下一次正确读入做准备。 }while(cho<1||cho>4); switch(cho) { case 1://存款 cout<<"请输入帐号:"; cin>>aNo; for(i=0;i { if((p+i)->getmSN()==aNo) { flag=1; (p+i)->deposit(); (p+i)->getBalance(); break; } } if(flag==0) cout<<"对不起,输入帐号有错误!"< getch(); break; case 2://取款 cout<<"输入账号:"; cin>>aNo; for(i=0;i { if((p+i)->getmSN()==aNo) { flag=1; r=(p+i)->withdraw(); if(r==0) cout<<"透支!"< else cout<<"成功"< break; } } if(flag==0) cout<<"帐号错误!"< getch(); break; case 3://查询 cout<<"输入账号:"; cin>>aNo; for(i=0;i { if((p+i)->getmSN()==aNo) { flag=1; (p+i)->getBalance(); break;} } if(flag==0) cout<<"帐号错误!"< getch(); break; case 4://退出 return 0; } } delete[] p; return 0; } 运行结果: //释放空间 2. N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。 设计一个学生类,包括学号、姓名和成绩数据成员外,还有两个静态变量sum和num, 分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋 值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。在main()函 数中定义了一个对象数组用于存储输入的学生数据。 程序如下: #include #include #define N 4 class Stud { private: int no; char name[10]; double deg; double static sum; int static num; public: void setdata(int n,char na[],double d); void disp(); double static avg(); }; double Stud::sum=0; int Stud::num=0; void Stud::setdata(int n,char na[],double d) { no=n;deg=d; strcpy(name,na); sum+=d; num++; } void Stud::disp() { printf("%-5d%-8s%3dn",no,name,deg); } double Stud::avg() { return sum/num; } void main() { Stud st[N]; int i,n; double d; char na[10]; for(i=0;i { printf("请分别输入学号 姓名 成绩:"); scanf("%d%s%d",&n,na,&d); st[i].setdata(n,na,d); } printf("输出学生信息n"); printf("学号 姓名 成绩n"); for(i=0;i st[i].disp(); printf("平均分=%dnn",st[N-1].avg()); } 运行结果: 【思考题】 1.数组之间如何赋值? 通过for循环 新建atr1,atr2两个数组,通过for(int i=0;i 数组赋值给atr2数组 使用opy 创建src1,src2两个数组,使用opy(src1, 0, src2, 0, 6);代码将src1 数组赋值给src2数组 使用clone 新建arr1,arr2两个数组,通过arr2=(int[]) ();代码,将arr1数组赋值给 arr2数组 2.引用和指针有何区别? 引用必须被初始化,指针不必; 引用初始化以后不能被改变,指针可以改变所指的对象; 不存在指向空值的引用,但是存在指向空值的指针; 3.对那些类型的数据不能使用引用? 数组和字面值不能使用引用
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714259721a2412173.html
评论列表(0条)