《数据结构课程设计》
课程题目 | 活期储蓄系统 |
课程编号 | j1620102 |
学生姓名 | 潘锦培 |
学生学号 | 201311671416 |
所在专业 | 信息管理与信息系统 |
所在班级 | 信管1134班 |
任课老师 | 易学明 |
实习时间 | 2015年1月9日 |
设计成绩 |
|
一、 题目描述
小明是一个计算机专业top student,祝贺他毕业了。并准备到银行参加工作。上班第一天,经理叫他编制一个实现一个活期储蓄处理程序,算作考查。上班第一天,一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了,请完成如下题目功能。储户开户、销户、存入、支出活动频繁,系统设计要求:(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;
二、功能模块及设计
1、主菜单模块
主菜单下有四个选择功能,能够实现不同功能。他们分别为开户,销户,查询,还有退出。根据你的需要进行选择,以实现其功能。
2、开户模块
主要用于客户的开户,选择开户模块,提示输入创建客户的ID和名字,然后开户成功。系统询问是否要继续进行。
3、销户模块
主要用于删除客户的ID,选择销户模块,输入你要删除的ID号码,然后系统会提示有余额,当余额全部取款后,销户就会成功。
4、查询模块
主要用于查询已存在ID的余额和存取款的问题。首先要输入你的ID号码,系统会出现你账号的姓名和余额,然后系统提示你是否需要存取款或者退出,根据自己的需求相应的选择相关号码。
三、运行和使用
1、使用
①主菜单:主菜单界面中有4个子选项,分别是开户,销户和查询和退出程序,用户可根据需要进行操作,选择适合的程序执行。
②开户模块:进入开户模块界面,根据提示依次输入ID和姓名,然后并根据提示是否继续进行下一步,最后返回主菜单!
③销户模块:选择此选项能够看到所有的职工信息,但是必须要进入录入职工信息程序来增加职工信息,才能成显示所有职工的信息,否则无信息提供。
四、思路与结构
1、设计思路
首先确定要进行设计的内容,然后根据题目要求进行编写,我分成了两个大部分,分别是第一部分的主菜单的开户模块,销户模块,查询模块和退出。第二部分是查询里面的查询余额,取款和存款。接着我们按照我们的想法进行编排,分析要使用的函数进行合理的调用。最后完成编写。
2、主要结构
主菜单
五、代码
#include<string.h>
#include<iostream.h>
class Client
{
public:
Client();
Client(int ID,char ming[30],double sum);
void Saving();
double Withdraw();
void Show();
int getID();
private:
int ID;
char name[30];
double sum;
};
class Bank
{ public:
Bank();
void open();
void Delete();
void chaxun();
private:
Client *account[100];
int a;
double sum;};
Client::Client()
{ sum=0.0; }
Client::Client(int id,char ming[30],double Bal)
{
ID=id;
strcpy(name,ming);
sum=Bal;
}
void Client::Saving()
{
int number;
cout<<"请输入存款金额:";
cin>>number;
sum=sum+number;
cout<<"现在您的账户余额为:"<<sum<<endl; }
double Client::Withdraw()
{
int number;
cout<<"请输入取款金额:";
cin>>number;
if(sum<number)
{ cout<<"对不起,您的账户余额不足"<<number;}
sum=sum-number;
cout<<"现在您的账户余额为"<<sum<<endl;
return sum; }
void Client::Show()
{ cout<<"账户ID:"<<ID<<endl;
cout<<"名字:"<<name<<endl;
cout<<"余额:"<<sum<<endl; }
int Client::getID()
{ return ID;}
Bank::Bank()
{
for(int i=0;i<100;i++)
account[i]=NULL;
a=0;}
void Bank::open()
{
int ID;
char ming[30];
cout<<"请输入账户ID:";
cin>>ID;
cout<<"请输入账户名字:";
cin>>ming;
Client *acc=new Client(ID,ming,0);
account[a]=acc;
cout<<"开户成功!"<<endl;
cout<<"您的信息:";
cout<<"账户ID:"<<account[a]->getID();
cout<<"名字:"<<ming;
a=a+1; }
void Bank::Delete()
{
int ID;
int x;
cout<<"请输入您想销户的ID:";
cin>>ID;
int flag=1;
int i=0;
while((i<a)&&(flag)) //判断ID是否存在
{
if(ID==account[i]->getID())
{flag=0;}
else
{
i++;}
}
if(flag)
{
cout<<"该客户不存在!"<<endl<<endl;
return;
}
for(int j=i;j<a;j++) //销户操作
{
account[j]=account[j+1];
}
account[a-1]=NULL;
a--;
cout<<"销户成功!"<<endl;
return;
}
void Bank::chaxun()
{ int ID;
char yn;
cout<<"请输入想要查询账户的ID:";
cin>>ID;
int k=1,i=0;
while((i<a)&&k)
{
if(ID==account[i]->getID())
k=0;
else
i++; }
if(k)
{
cout<<"此帐号不存在!"<<endl;
cout<<"是否继续?(Y/N)"<<endl;
cin>>yn; }
account[i]->Show();
int choice=0;
cout<<"1:存款"<<endl;
cout<<"2:取款"<<endl;
cout<<"3:返回"<<endl;
cout<<"请输入您的选择";
cin>>choice;
switch(choice)
{
case 1:account[i]->Saving();break;
case 2:account[i]->Withdraw();break;
case 3:break; }
}
void main()
{
Bank bank;
char yn;
int choice=0;
while (1)
{
cout<<"@@@@@@@@@@@欢迎使用@@@@@@@@@@@@"<<endl;
cout<<"@@@@@@@欢迎来到银行系统!@@@@@@@"<<endl;
cout<<"-------------------------------"<<endl;
cout<<"@ 1:开户 @"<<endl;
cout<<"@@ 2:销户 @@"<<endl;
cout<<"@@@ 3:查询 @@@"<<endl;
cout<<"@@@@ 4:退出 @@@@"<<endl;
cout<<"请输入您的选择:";
cin>>choice;
switch(choice)
{
case 1:bank.open();break;
case 2:bank.Delete();break;
case 3:bank.chaxun();break;
case 4:break; }
cout<<endl;
cout<<"是y否n继续";
cin>>yn;
if (yn!='y')
break; }
}
六、测试数据
数据测试能够正常运行,没特殊异常情况出现。
七、问题与改进
1、问题:第一,登陆时的登陆界面如何更加美观。第二,由于查找函数内容比较繁杂,所以编写的时候比较困难。第三,删除函数的设计不能熟练编写。第四,编程繁杂混乱,不能清晰表达内容。第五,对基本语句的运用不够纯熟,例如for,while等语句的运用。
2、改进:第一,要更加熟练运用C++函数,学习别人的简洁的设计,达到高效便捷。第二、功能设计上可以花更多的时间思考设计。第三、代码编写要多熟练掌握书本上的知识。遇到不懂的问题要立刻查找相关资料或询问老师,保证问题不过夜。第四,学习更多的语言,结合不同的语言,使程序更加简练,高效。
第五,通过书本知识或者网上寻找资料解决问题
八、收获与体会
课程设计是培养学生综合运用所学知识,并提高我们发现、提出、分析和解决实际问题能力,在这次课程设计的过程中,我深深地体会到了理论与实践结合的难度和当实践成功时的成就感,我从整个过程中我受益匪浅。
在设计课程设计的日子里,我学到很多的东西。不仅可以巩固了以前所学过的知识,并且发掘了很多在已有的书本上所没有接触到的知识。在设计的过程中遇到问题很平常,但却是在书本上从没见过的,没有任何头绪解决的,在设计的时候遇到难懂的问题是在所难免的。但是在解决这些问题的过程中,却给我带来了极大的益处。除去知识上的自我完善,这次课程设计给我带来的很大的收获是在设计的过程中发现了自己的不足之处,完善自身的不足。
我本学期课程设计是有关活期储蓄的内容。在已有的C++知识基础上,加上新学习的数据结构的知识。通过这个不断学习地过程中,我的知识得到了提高
能力和研究能力得到了极大地提高。通过这次课程设计,我懂得了理论与实际相结合是很重要的,理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,把知识变成自己的,这样才能自己独立思考的能力,学习的能力和动手实践的能力等等。
至今我感慨颇多的应当是遇到一些编译问题时没有想法的时候,自己苦苦的思考却找不出答案,但通过查找书本和通过上网查找资料获得解决问题的方法,这是让我最深刻的。转眼我的课程设计结束了,但是它留给我的东西恒久有
效。不论是已经属于我的知识,还是它带给我的能力,都使我在各个方面得到了自我完善。我们学习的目的就在于实践,这次实践的过程给我带来能力和知识的提高和增长。