数据结构课程设计

一、实训目的

通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。

题目 1.小明是一个计算机专业top student,祝贺他毕业了。并准备到银行参加工作。上班第一天,经理叫他编制一个实现一个活期储蓄处理程序,算作考查。上班第一天, 一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了,请完成如下题目功能。储户开户、销户、存入、支出活动频繁,系统设计要求:(1能比较迅速地找到储户的帐户,以实现存款、取款记账;2能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

源代码:

</pre><pre name="code" class="cpp"><span style="font-size:14px;">#include<iostream.h>
#include<iomanip.h>
#include <string>
using namespace std;
long num[100],time[100];
float money[100];
char*namek[100];
char*idk[100];
char*telk[100];
char*wplacek[100],*homek[100];
float interest=0;
char yes;
char name[100];
 int get_num( long *num  )   //获取账号
{
for(int j=1;j<=100;j++)
if(num[j]<=0)return j;
cout<<"   账户已满"<<endl;
return 0;
}	
                                //填写资料
 void get_inform(  int n,long* num,char**idk,
 char **namek,char**wplacek,char**telk,char**homek)
{ cout<<"请输入  姓    名:";
cin>>*(namek+n);
cout<<"请输入  电话号码:";
cin>>*(telk+n);
cout<<"请输入  单位名称:";
cin>>*(wplacek+n);	
cout<<"请输入  地    址:";
cin>>*(homek+n);
 cout<<"请输入  密    码:";
cin>>*(num+n);
cout<<"请输入身份证号码:";
cin>>*(idk+n); 
return;

}
                            //个人界面
  void personal(int n,long* time,float *money,long *num,float interest)
 { long t;
  int mtemp,ntemp,loop=0;
  char temp;//loop=0
  while(loop==0)              //loop=0不能放到personal外!
  {cout<<"++++++++++++++++++++++++++++++++"<<endl;
  cout<<"    1-存    款"<<endl;
  cout<<"    2-取    款"<<endl;
  cout<<"    3-转    账"<<endl;
   cout<<"    4-销    户"<<endl;
  cout<<"    5-返回主菜单"<<endl;
  cout<<"当前的利率为:"<<endl;
      scanf("%c",&temp);
      fflush(stdin);
  if(temp!='1'&&temp!='2'&&temp!='3'&&temp!='4'&&temp!='5')
 cout<<"输入错误,请重新输入\n"<<endl;
  switch(temp)
{
  case '1':
  cout<<"请输入存款金额:";
  cin>>mtemp;
  *(money+n)+=mtemp;
  cout<<"   交易成功!"<<endl; 
  cout<<"   当前的余额为:"<<*(money+n)<<endl;
  break;
  case '2':
  cout<<"请输入存款时长:";
  cin>>t;
  *(time+n)=t;
  interest+=(0.02*t*(*(money+n)));
  cout<<"   获得利息为:"<<interest<<endl;
          *(money+n)+=interest;
  cout<<"请输入取款金额(<="<<*(money+n)<<"):";
  cin>>mtemp;
  if(mtemp>*(money+n))
  {
  cout<<"   余额不足,交易失败!";
  break;
  }
  *(money+n)-=mtemp;
  cout<<"   交易成功!"<<endl;
  cout<<"   当前的余额为:"<<*(money+n)<<endl; 
  break;
  case '3':
  cout<<"请输入转入账号:";
  cin>>ntemp;
  if(ntemp<1||ntemp>99)
  {
  cout<<"   该账号不存在!"<<endl;
  break;
  }
          if(*(num+ntemp)==0)
  {
  cout<<"   该账号未注册!"<<endl;
  break;
  }
      if(*(num+ntemp)==-1)
  {
  cout<<"   该账户已注销!"<<endl;
  break;
  }
  cout<<"请输入转出金额(<="<<*(money+n)<<"):";
  cin>>mtemp;
  if(mtemp>*(money+n))
  {
  cout<<"   余额不足,交易失败!";
  break;
  }
      cout<<"   确认转账?[Y/N]:";
      cin>>yes;
  if(yes=='Y')
  { 
  *(money+n)-=mtemp;
  *(money+ntemp)+=mtemp;
  cout<<"   交易成功!"<<endl;
  }
  cout<<"   当前的余额为:"<<*(money+n)<<endl;
  break;
  case '4':
  cout<<"   确认注销?[Y/N]:";
  cin>>yes;
  if(yes=='Y')
  {
  cout<<"   已注销!"<<endl;
  *(num+n)=-1;
  }
  loop=1;
  break ;
  case '5':
  loop=1;
  break;
  }
}
}
                                    //打印用户信息
  void print(int n,char**namek,char**wplacek,char**telk,
  char**homek,char**idk,float *money,long*time,float interest) 
                      //不能是char*namek,char*wplacek(二级指针)
  {	cout<<"=================================="<<endl;
    cout<<"账      号:"<<setw(6)<<setfill('0')<<n<<endl;
    cout<<"姓      名:"<<*(namek+n)<<endl;
    cout<<"单      位:"<<*(wplacek+n)<<endl;
    cout<<"电      话:"<<*(telk+n)<<endl;
cout<<"地      址:"<<*(homek+n)<<endl;
cout<<"余      额:"<<*(money+n)<<endl;
    cout<<"时      长:"<<*(time+n)<<endl;
        cout<<"利      息:"<<interest<<endl;
cout<<"身份证号码:"<<*(idk+n)<<endl;
     	cout<<"=================================="<<endl;
  }
                          //查询
void check(int n,char**namek,char**wplacek,char**telk,
  char**homek,char**idk,float *money,long*time,float interest)	   
  {
  int i=0,k=0;
char j;  //k=0
 while(k==0) 
 {cout<<"++++++++++++++++++++++++++++++++"<<endl;
 cout<<"       1-按账号查询"<<endl;
 cout<<"       2-按姓名查询"<<endl;
 cout<<"       3-返回上一层"<<endl;
 scanf("%c",&j);
     fflush(stdin);
 if(j!='1'&&j!='2'&&j!='3')
 cout<<"输入错误,请重新输入\n"<<endl;
 switch(j)
 {
 case '1':
 cout<<"请输入账号:";
 cin>>n;
         if(n<1||n>99)
 {
 cout<<"   该账号不存在!"<<endl;
 break;
 }
 if(*(num+n)==0)
 {
 cout<<"   该账号未注册!"<<endl;
 break;
 }
 if(*(num+n)==-1)
 {
 cout<<"   该账户已注销!"<<endl;
 break;
 }
  print( n,namek,wplacek,telk,
  homek,idk,money,time,interest);
break;
 case '2':          
 cout<<"请输入姓名:";
 cin>>name;
 for(j=1;j<=99;j++)
 {
 if(string(*(namek+j))==string(name))
 {
 if(*(num+j)!=-1)
 {
 print( j,namek,wplacek,telk,
           homek,idk,money,time,interest);
 i++;
 }   
 }
 }
 if(i==0)
 cout<<"   该户主不存在!"<<endl;
 break;
 case '3':
 k=1;
 break;
 }
 }
  }
 void main()
{	
cout<<"  欢迎进入活期储蓄账目管理 "<<endl;
int r=0,i,m,n;
char temp;
for(i=1;i<=100;i++)
{
num[i]=0;money[i]=0;time[i]=0;
*(namek+i)=new char[100];    //
*(wplacek+i)=new char[100];  //
*(homek+i)=new char[100];
*(idk+i)=new char[100];
*(telk+i)=new char[100];
}
while(r==0)
{
cout<<"********************************"<<endl;
cout<<"   1-进入帐户"<<endl;
cout<<"   2-开    户"<<endl;
cout<<"   3-查    询"<<endl;
cout<<"   4-退    出"<<endl;
cout<<"********************************\n请选择:"<<endl;
scanf("%c",&temp);
fflush(stdin);
 if(temp!='1'&&temp!='2'&&temp!='3'&&temp!='4')
 cout<<"输入错误,请重新输入\n"<<endl;
 switch(temp)
 {
 case '1':
   cout<<"请输入账号:";
   cin>>n;
   if(n<1||n>99)
   {
   cout<<"   该账号不存在!"<<endl;
   break;
   }
   if(*(num+n)==0)
   {
   cout<<"   该账号未注册!"<<endl;
   break;
   }
   if(*(num+n)==-1)
   {
   cout<<"   该账户已注销!"<<endl;
   break;
   }
   cout<<"请输入密码:";
   cin>>m;
   if(*(num+n)!=m)
   {
   cout<<"   密码错误!";
   break;
   }
   else 
   personal(n,time,money,num,interest);
   break;
 case '2':
 n=get_num(  num  );
 if(n==0)
 break;
 get_inform(n,num, idk,namek,wplacek,telk,homek);
 cout<<"   确认开户?[Y/N]:";
 cin>>yes;
 if(yes=='Y')
 cout<<"   开户成功!\n"<<"   您的账号为:"
 <<setw(6)<<setfill('0')<<n<<endl;
    else *(num+n)=-1;
break;
 case '3':
 check( n,namek,wplacek,telk,homek,idk,money,time,interest);	  
 break;
 case '4':
 r=1;
 cout<<"   welcome!"<<endl;
 break;
     
 }	  
}
for(i=1;i<100;i++)
{     delete []*(namek+i);   
      delete []*(wplacek+i);
      delete []*(homek+i);
   delete []*(idk+i);
   delete []*(telk+i);
}
 }</span>
程序实现:







  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值