一、问题描述
小明是一个计算机专业top student,祝贺他毕业了。并准备到银行参加工作。上班第一天,经理叫他编制一个实现活期储蓄处理程序,算作考查。上班第一天,一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了,请完成如下题目功能。储户开户、销户、存入、支出活动频繁,系统设计要求:
(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;
(2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
二、问题分析
本系统需要实现以下一些基本功能:
1. 能够输入用户的信息而创建银行账户,也能输入用户的信息而删除用户在银行创建的账户。
2. 能比较迅速地找到储户的帐户,以实现存款、取款记账。
3. 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
三、算法设计
1. 系统功能分析
执行程序后,按界面的显示,选择0-5种操作。选1,储蓄户开户,资料包括名字、性别、身份证号码。选2,储蓄户销户。选3,储蓄户存钱,存入一定金额。选4,储蓄户取钱,取出一定金额(不允许超过账户中的金额)。选5,显示储蓄户账户余额。选0,退出该系统。
2. 系统功能模块划分与设
四、源代码
#include<iostream>
#include<string>
using namespace std;
const int M=10000;
static int n=0,count=1;
struct zhanghao
{
intnum;
charname[30];
charsex[4];
chariden[30];
intmoney;
};
struct zhanghao a[M];
void open();
void close();
void save();
void draw();
void balance();
voidmain(){
inti;
for(i=0;i<10000;i++)
a[i].money=0;
while(1){
cout<<"**------------欢迎使用------------**"<<endl;
cout<<"**---------1.储蓄户开户-----------**"<<endl;
cout<<"**---------2.储蓄户销户-----------**"<<endl;
cout<<"**---------3.储蓄户存钱-----------**"<<endl;
cout<<"**---------4.储蓄户取钱-----------**"<<endl;
cout<<"**---------5.储蓄户余额-----------**"<<endl;
cout<<"**---------0.退出系统-------------**"<<endl;
cout<<"**--说明:若金额为-1则没有该用户--**"<<endl;
cout<<"**--------------------------------**"<<endl;
cout<<"输入数字选择你要执行的功能(0-5):";
cin>>i;
if(i==0) break;
cout<<endl;
switch(i){
case1:open(); break;
case 2:close(); break;
case 3:save(); break;
case 4:draw(); break;
case 5:balance(); break;
default: cout<<"输入错误"<<endl;
}}}
void open()
{
cout<<"该储蓄户的帐号为:"<<count<<endl;
a[n].num=count;
count++;
cout<<"请输入储蓄户的名字:";
cin>>a[n].name;
cout<<"请输入储蓄户的性别:";
cin>>a[n].sex;
cout<<"请输入该用户的身份证号码:";
cin>>a[n].iden;
a[n].money=0;
cout<<"该储蓄户帐号金额为:"<<a[n].money<<endl;
n++;
}
voidclose()
{
char names[]="sorry,Without thisuser";
charsexs[]="sorry";
charidens[]="sorry";
int j;
cout<<"输入储蓄户删除的帐号:";
cin>>j;
a[j].num=0;
strcpy(a[j].name,names);
strcpy(a[j].sex,sexs);
strcpy(a[j].iden,idens);
a[j].money=-1;
}
voidsave()
{
int l,k;
cout<<"输入该用户的储蓄帐号:";
cin>>l;
if(l>n||a[l].name==NULL) throw "异常";
cout<<"存入的金额为:";
cin>>k;
a[l].money=a[l].money+k;
}
voiddraw()
{
int l,k;
cout<<"输入该用户的储蓄帐号:";
cin>>l;
cout<<"取出的金额为:";
cin>>k;
if(k>a[l].money||l>n||a[l].name==NULL) throw"异常";
else a[l].money=a[l].money-k;
}
voidbalance()
{
int l;
cout<<"输入查询的帐号:";
cin>>l;
cout<<endl;
cout<<"储蓄户的帐号为:"<<l<<endl;
cout<<"储蓄户帐号金额为:"<<a[l].money<<endl;
}
五、程序运行结果
六、心得
对于该课程设计过程中提出的任务,该程序已基本完成,可是过于简便,不够严密,还需要好好增长自己的知识使程序更加完美。这个课程设计使我明白一个程序的完成需要提前有所规划,这样才能将问题考虑全面,不至于在设计中出现过大的问题。在此课程设计中也让我明白理论与实际应用相结合的重要性,并提高了自己组织数据以及编写程序的能力,培养了基本的、良好的程序设计技能和提高独立编程的能力,也提高了我的综合运用所学知识的能力,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高,也让我对C++有了更深的了解。不过我还是需要多多锻炼,努力学习!