数据结构之程序设计
来源:互联网 发布:电脑软件论坛 编辑:程序博客网 时间:2024/05/03 21:00
专 业:物联网工程1132班
l学 号:201311672206
姓 名:黄安杰
指导老师:易学明
时 间: 2015.1.11
一、实验题目:
小明是一个计算机专业top student,祝贺他毕业了。并准备到银行参加工作。上班第一天,经理叫他编制一个实现一个活期储蓄处理程序,算作考查。上班第一天, 一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了,请完成如下题目功能。储户开户、销户、存入、支出活动频繁,系统设计要求:
(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;
(2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
二、实验目的:
通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。
三、实验内容:
储户开户、销户、存入、支出活动频繁,系统设计要求:
(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;
(2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
四、代码。
#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<<"当前的利率为:"<<ROI<<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<<" 再见!"<<endl;
break;
}
}
for(i=1;i<100;i++)
{ delete []*(namek+i); //写成(name)\(name+i)都是不对的!!
delete []*(wplacek+i);
delete []*(homek+i);
delete []*(idk+i);
delete []*(telk+i);}
}
五、总结。
感觉这学期的数据结构比c++容易懂好多,老师也教得比较好还有很细致,讲课的时候运用一些图像来配合教学让我可以更加形象的理解,以后会更加努力。这个课程设计一开始想用二叉树的节点结构来做得,弄了几天都弄不出来,只得借鉴其他同学的方法来做,太弱了,只有多多努力。
0 0
- 数据结构之程序设计
- 【Data】数据结构之C++程序设计(1)
- 数据结构程序设计
- [数据结构]打印蛇形矩阵的程序设计之方法二
- 程序设计、数据结构、编译相关图灵奖得主简介之二
- 数据结构与程序设计 作业
- 数据结构与程序设计-E2
- 数据结构程序设计 第一题
- 《数据结构与程序设计》程序设计技术规则总结
- C++数据结构与程序设计:程序设计原理
- 多核计算与程序设计 - 05 基本算法和数据结构 之二 多线程链表
- 多核计算与程序设计 - 06 基本算法和数据结构 之三 哈希表与哈希链表
- 多核计算与程序设计 - 07 基本算法和数据结构 之四 树
- 多核计算与程序设计 - 09 基本算法和数据结构 之四 AVL搜索树
- sdut.acm2012级《程序设计基础Ⅱ)》_链表 数据结构实验之链表二:逆序建立链表
- 多核计算与程序设计 - 08 基本算法和数据结构 之四 二叉树
- 新书创作谈:周立功教授数十年之心血力作《程序设计与数据结构》
- 程序设计灵魂---算法和数据结构
- OC抛出异常与自定义异常类
- java中length,length(),size()区分
- IOS1.8-字典转模型
- 修复界面bug并增加了自动提示是否输赢的 关于之前博客"html5 canvas 绘制象棋(将持续改进)"
- C++ 虚函数表解析
- 数据结构之程序设计
- iOS安全攻防(一)用theos和iOSOpenDev搭建越狱开发环境
- 硬盘装linux系统
- 杭电1004 Let the Balloon Rise
- 数据结构课程设计
- MyBatis 中无效的列类型 整形
- 【ExtJS】输入框Clear按钮
- 实训的第一天
- redhat7 grub2 添加win7启动项