课程设计

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

2能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。


《数据结构》课程设计

 

                                      目录

 

 

一.主要内容 …………………………………………………1

   

(一)问题描述……………………………………………………1   

(二)设计思想……………………………………………………1

 

 

二.程序流程图…………………………………………………2

 

 

 

 

三.用户手册……………………………………………………2

 

 

 

四.操作流程……………………………………………………3

 

 

 

五.片段代码……………………………………………………4

 

 

六.总结…………………………………………………………5

 

 

七.源代码………………………………………………………6

  一.主要内容

银行活期储蓄程序

(一)问题描述

 

   设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址等, 允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。 基本要求:程序运行时,可以由用户选择进行何种操作,开户操作 要求输入用户信息后自动获取账号,用户销户后账号被回 收,并且该账号可以继续分配给其它账户,不允许用户透支, 根据姓名或账号可以进行用户的信息查询,所有的账户信息 应存放到一个文件中,可以随时的访问和更新。

 

 

(二)设计思想:

 

定义一个用户类 customer,数据成员主要有姓名、身份证号码、住址、余额等内容,可供用户操作的功能有开户、销户、存款、取款、转账、余额查询等。用户可根据界面提示自行操作。由于要实现界面的回复,所以用了大量的函数调用。在控制用户的循环操作时采用了for循环与 break匹配的结构。

 

在整体的设计上将程序分为三个部分,第一个部分“customer.h”在这个文件中对所要用到的类 customer进行了声明,第二个文件“customer.cpp”是对在“customer.h”中所声明的类 customer 定义了一个实体,也可以说是完成了帐户的操作函数,第三个文件“Accounter.cpp“是主函数 main()所在文件,在其中不仅定义了主函数,而且完成了菜单操作函数。三个文件各有各的内容,实现了不同的功能,同时也在查错和对程序的维护方面带来很多便利。

 

 

二、程序流程图

开始 

 

选择 dis_menu()

dis_menu()

del_account()

 

 

 

开 户 open_account() 

 

 

 

get_money()

 

save_money()

 

find_infor()

 

change_mon

 

 

 

 

 

 

 

 

 

 


退出系统 cout<<"感谢您的使用,再见!"<<endl

 终 止

 三、用户手册: 

程序运行时,首先开户,开户后在选择其他服务。 

开户后才能选择其他的服务,程序本身包含很多除错功能,当用户有不当操时程序会自动提示,并提示用户重新选择服务。

四、操作流程 

1、首先给出用户操作

 

2、用户根据提示选择相应功能(比如 1)



3、用户操作完一个相应的功能后可根据提示返回主界面

 

4、当用户结束自己的操作时可推出系统

 五、片断代码

在开户与销户操作时,引进了一个类似开关功能的数据成员 test,其主要功能是通过 test 的 1 与 0 的赋值来判断用户 的存在与否。1 表示开启此帐号,而 0 表示关闭此帐号: 

(1)、类中定义

class customer

{private:

 double customer _Num;

 int test;//定义一个开关功能的数据成员 

(2)、开启帐户

p[Z]->test=1;//在对象初始化的时候将其赋值为 1,即表示开启此户 

(3)、关闭帐户

 p[z]->test=0;//在用户进行销户的时候将其赋值为 0,表示关闭此帐户 

(4)、测试帐户是否关闭

 if(cn<10001||cn> customer_Num||p[cn-10000]->test==0)//通过判断 test 是否为 0 来判断此用户帐户是否存在

 {cout<<"对不起,您的帐户错误或并不存在"<<endl;  } 

六、总结

    回顾数据结构课程设计这些日子,至今我感慨颇多,的确,学到了很多东西包括以前在课本上没有学到的知识,还使我懂得了理论和时间结合是很重要的。 

这次课程设计中遇到了一些问题与同学一起讨论解决,让我明白同学间合作的重要性。这个课程设计并不完美,还有很多要改善的地方,例如查询账户时不能通过账号来查询账户,而是直接显示所有用户信息,还有就是交易记录也是显示所有用户的交易信息,没有交易时间的显示。还有一些没想到的细节。虽然不是很完美,但发现不足之处并在以后的设计中注意这些细节,对于将来的实践还是很有帮助,我们可以不断发现我们的不完美,并想办法去改进这些不完美。

通过这次课程设计,让我进一步了解了C++程序设计方法。更重要的是培养了自己耐心、细心、用心的良好品质。希望以后能有机会对这门课进行更深一步的了解,也很乐意通过自己的努力来提高自己在这个知识领域的水平。同时也非常感谢同学的帮助及老师的建议与指导。

七、源代码

Customer.cpp:

#include<iostream>

Using namespace std;

#include "customer.h"

void dis_menu();

void slect_menu();

void handle_menu();

double customer_Num=10000;//用户帐号

int Z=0;//指针变量

customer *p[10000];//本程序支持 10000 个用户

void open_account()// 开户函数

{

   char Name[8];

   char ID[30];

   char Work_Group[80];

   char Tel_Num[20];

   char Address[60];

   float Money(0);

   if(customer_Num==20000)

   {

      cout<<"对不起,系统存储空间已满,无法开户,对此带来的不便我们深表歉意!"<<endl;

      dis_menu();

      slect_menu();

      return;

 }

 Z++;

 customer_Num++;

 p[Z]=new customer;

 cout<<"请输入您的姓名:"<<endl;

 cin>>Name;

 cout<<"请输入您的身份证件号码:"<<endl;

 cin>>ID;

 cout<<"请输入您的单位地址:"<<endl;

 cin>>Work_Group;

 cout<<"请输入您的电话号码:"<<endl;

 cin>>Tel_Num;

 cout<<"请输入您的住址:"<<endl;

 cin>>Address;

 cout<<" 请输入您的金额(开户¥50.00元起):"<<endl;

 cin>>Money;                                      //银行开户 50 元起

   char a1[80];

   for(;;)

   {   int Money;

       gets(a1);

       Money=atoi(a1);

       if(Money<50||Money>100000000)

       {

          cout<<"对不起,您输入的金额不正确。"<<endl;

          cout<<"(提示消息:金额小于 50 或过于巨大。)"<<endl;

          cout<<"请重新输入您的金额:"<<endl;

       }

       else

          break;

   }

   p[Z]->customer_Num=customer_Num;

     for(int a=0;a<8;a++)

   {

 p[Z]->Name[a]=Name[a];

   }

   for(int b=0;b<30;b++)

   {

      p[Z]->ID[b]=ID[b];

   }

   for(int c=0;c<80;c++)

   {

      p[Z]->Work_Group[c]=Work_Group[c];

   }

   for(int d=0;d<20;d++)

   {

      p[Z]->Tel_Num[d]=Tel_Num[d];

   }

   for(int e=0;e<60;e++)

   {

      p[Z]->Address[e]=Address[e];

   }

   p[Z]->Money=Money;

   p[Z]->test=1;

   cout<<" 恭 喜 您 , 开 户 成 功 ! 您 的 帐 户 为 :"<<customer_Num<<"请牢记"<<endl;

   cout<<"您需要继续服务吗(Y/N)?"<<endl;

   char cn;

   cin>>cn;

   for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';)

   {

      cout<<"您刚才输入的既不是“Y”也不是“N”!"<<endl;

      cout<<"您需要继续服务吗(Y/N)?"<<endl;

      cin>>cn;

   }

   if(cn=='y'||cn=='Y')

   {

      dis_menu();

      slect_menu();

 

return;

}

if(cn=='n'||cn=='N')

{

   cout<<"感谢您的使用,再见!"<<endl;

   return;

}

}

void save_money()//存款函数

{

   cout<<"请输入您的帐号:"<<endl;

   int z=0;

   int cn;

   char a[80];

   for(;;)

   {

      gets(a);

      cn=atoi(a);

   if(cn<10001||cn>customer_Num||p[cn-10000]->test==0)

         {

           cout<<"对不起,您输入的帐户错误或并不存在!"<<endl;

           cout<<"您需要继续存款吗?(Y/N)"<<endl;

           char cn;

           cin>>cn;

           for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';)

           {

              cout<<" 您 刚 才 输 入 的 既 不 是 “ Y ” 也 不 是“N”!"<<endl;

              cout<<"您需要继续存款吗?(Y/N)"<<endl;

              cin>>cn;

           }

           if(cn=='y'||cn=='Y')

 

{

save_money();

return;

}

if(cn=='n'||cn=='N')

{

   dis_menu();

   slect_menu();

   return;

}

   }

else

   z=cn-10000;

   break;

}

cout<<"请输入您存入的金额:"<<endl;

int save;

for(;;)

{

   cin>>save;

   if(save<0)

   {

      cout<<"对不起,您输入的金额错误!"<<endl;

        cout<<"请输入您存入的金额:"<<endl;

   }

   else

      break;

}

p[z]->Money=p[z]->Money+save;

cout<<"存款成功!"<<endl;

cout<<"您需要继续存款吗(Y/N)?"<<endl;

char cn1;

cin>>cn1;

for(;cn1!='n'&&cn1!='N'&&cn1!='y'&&cn1!='Y';)

{

cout<<"您刚才输入的既不是“Y”也不是“N”!"<<endl;

cout<<"您需要继续存款吗(Y/N)?"<<endl;

cin>>cn1;

}

if(cn1=='y'||cn1=='Y')

{

   save_money();

   return;

}

if(cn1=='n'||cn1=='N')

{

   dis_menu();

   slect_menu();

   return;

}

}

void get_money()//取款函数

{

   cout<<"请输入您的帐号:"<<endl;

   int z=0;

   int cn;

   char a[80];

   for(;;)

   {

      gets(a);

      cn=atoi(a);

   if(cn<10001||cn>customer_Num||p[cn-10000]->test==0)

         {

           cout<<"对不起,您输入的帐户错误或并不存在!"<<endl;

           cout<<"您需要继续取款吗?(Y/N)"<<endl;

           char cn;

           cin>>cn;

           for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';)

            {

               cout<<" 您 刚 才 输 入 的 既 不 是 “ Y ” 也 不 是 “N”!"<<endl;

               cout<<"您需要继续取款吗?(Y/N)"<<endl;

               cin>>cn;

            }

            if(cn=='y'||cn=='Y')

            {

               get_money();

               return;

            }

            if(cn=='n'||cn=='N')

            {

               dis_menu();

               slect_menu();

               return;

            }

        }

     else

        z=cn-10000;

        break;

  }

  cout<<"请输入您要取出的金额:"<<endl;

  int get;

  for(;;)

  {

     cin>>get;

     if(get>p[z]->Money)

     {

        cout<<"对不起,您的余额额不足!"<<endl;

          cout<<"请输入您要取出的金额:"<<endl;

     }

     else

        break;

}

p[z]->Money=p[z]->Money-get;

cout<<"取款成功!"<<endl;

cout<<"您需要继续取款吗(Y/N)?"<<endl;

char cn1;

cin>>cn1;

for(;cn1!='n'&&cn1!='N'&&cn1!='y'&&cn1!='Y';)

{

   cout<<"您刚才输入的既不是“Y”也不是“N”!"<<endl;

   cout<<"您需要继续取款吗(Y/N)?"<<endl;

   cin>>cn1;

}

if(cn1=='y'||cn1=='Y')

{

   get_money();

   return;

}

if(cn1=='n'||cn1=='N')

{

   dis_menu();

   slect_menu();

   return;

}

}

void change_money()//转帐函数

{

   int z1=0;

   int z2=0;

   int acco_num1;

   int acco_num2;

   cout<<"请输入您的帐号:"<<endl;

   char a1[80];

   for(;;)

   {

gets(a1);

acco_num1=atoi(a1);

   if(acco_num1<10001||acco_num1>customer_Num||p[acco_num1-10000]->test==0)

         {

            cout<<" 对 不 起 , 您 的 帐 户 错 误 或 并 不 存 在 。"<<endl;

            cout<<"您需要继续转帐吗?(Y/N)"<<endl;

            char cn;

            cin>>cn;

            for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';)

            {

               cout<<" 您 刚 才 输 入 的 既 不 是 “ Y ” 也 不 是“N”!"<<endl;

               cout<<"您需要继续转帐吗?(Y/N)"<<endl;

               cin>>cn;

            }

            if(cn=='y'||cn=='Y')

            {

               change_money();

               return;

            }

            if(cn=='n'||cn=='N')

            {

               dis_menu();

               slect_menu();

               return;

            }

         }

      else

      {

         z1=acco_num1-10000;

         break;

      }

 

 

}

cout<<"请输入对方的帐号:"<<endl;

char a2[80];

for(;;)

{

   gets(a2);

   acco_num2=atoi(a2);

   if(acco_num2<10000||acco_num2>customer_Num||p[acco_num2-10000]->test==0)

         {

           cout<<" 对 不 起 , 对方 的 帐户 错 误或 并 不 存在 。"<<endl;

           cout<<"您需要继续转帐吗?(Y/N)"<<endl;

           char cn;

           cin>>cn;

           for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';)

           {

              cout<<" 您 刚 才 输 入 的 既 不 是 “ Y ” 也 不 是 “N”!"<<endl;

              cout<<"您需要继续转帐吗?(Y/N)"<<endl;

              cin>>cn;

           }

           if(cn=='y'||cn=='Y')

           {

              change_money();

              return;

           }

           if(cn=='n'||cn=='N')

           {

              dis_menu();

              slect_menu();

              return;

           }

        else

{

   z2=acco_num2-10000;

   break;

}

}

cout<<"请输入您要转帐给对方的金额:"<<endl;

float change=0;

cin>>change;

for(;change>p[z1]->Money||change<0;)

{

   cout<<"对不起,您的余额不足或金额错误!"<<endl;

   cout<<"请输入您要转帐给对方的金额:"<<endl;

   cin>>change;

}

p[z1]->Money=p[z1]->Money-change;

p[z2]->Money=p[z2]->Money+change;

cout<<"交易成功!"<<endl;

cout<<"您需要继续转帐服务吗(Y/N)?"<<endl;

char cn;

cin>>cn;

for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';)

{

   cout<<"您刚才输入的既不是“Y”也不是“N”!"<<endl;

   cout<<"您需要继续转帐服务吗(Y/N)?"<<endl;

   cin>>cn;

}

if(cn=='y'||cn=='Y')

{

   change_money();

   return;

}

if(cn=='n'||cn=='N')

{

   dis_menu();

 

   slect_menu();

return;

}

}

void find_infor()//查询函数

{

   int z=0;

   int cn;

   char a[80];

   for(;;)

   {

      gets(a);

      cn=atoi(a);

   if(cn<10001||cn>customer_Num||p[cn-10000]->test==0)

         {

           cout<<" 对不起,您的帐户错误或并不存在!"<<endl;

           cout<<"您需要继续查询服务吗(Y/N)?"<<endl;

           char cn;

           cin>>cn;

           for(;cn!='n'&&cn!='N'&&cn!='n'&&cn!='Y';)

           {

              cout<<"您刚才输入的既不是“Y”也不是“N”!"<<endl;

              cout<<"您需要继续查询服务吗(Y/N)?"<<endl;

              cin>>cn;

           }

           if(cn=='y'||cn=='Y')

           {

              find_infor();

              return;

           }

 

if(cn=='n'||cn=='N')

{

   dis_menu();

   slect_menu();

   return;

}

   }

else

{

   z=cn-10000;

   break;

}

}

cout<<"帐号:\t"<<p[z]->customer_Num<<endl;

cout<<"姓名:\t"<<p[z]->Name<<endl;

cout<<"住址:\t"<<p[z]->Address<<endl;

cout<<"电话:\t"<<p[z]->Tel_Num<<endl;

cout<<"余额:\t"<<p[z]->Money<<"元"<<endl;

cout<<"\n 您需要继续查询服务吗(Y/N)?"<<endl;

char cn1;

cin>>cn1;

for(;cn1!='n'&&cn1!='N'&&cn1!='y'&&cn1!='Y';)

{

   cout<<"您刚才输入的既不是“Y”也不是“N”!"<<endl;

   cout<<"您需要继续查询服务吗(Y/N)?"<<endl;

   cin>>cn1;

}

if(cn1=='y'||cn1=='Y')

{

   find_infor();

   return;

}

if(cn1=='n'||cn1=='N')

{

   dis_menu();

slect_menu();

return;

}

}

void del_account()//注销函数

{

   cout<<"请输入您的帐户:"<<endl;

   int z=0;

   int cn;

   char a[80];

   for(;;)

   {

      gets(a);

      cn=atoi(a);

   if(cn<10001||cn>customer_Num||p[cn-10000]->test==0)

         {

           cout<<" 对 不 起 , 您 的 帐 户 错 误 或 并 不 存 在 !"<<endl;

           cout<<"您需要继续查询服务吗(Y/N)?"<<endl;

           char cn;

           cin>>cn;

           for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';)

           {

              cout<<"您刚才输入的既不是“Y”也不是“N”!"<<endl;

              cout<<"您需要继续查询服务吗(Y/N)?"<<endl;

              cin>>cn;

           }

           if(cn=='y'||cn=='Y')

           {

              find_infor();

              return;

           }

if(cn=='n'||cn=='N')

{

   dis_menu();

   slect_menu();

   return;

}

   }

else

{

   z=cn-10000;

   break;

}

}

p[z]->test=0;

cout<<"销户成功!"<<endl;

cout<<"您需要继续服务吗?(Y/N)"<<endl;

char cn1;

cin>>cn1;

for(;cn1!='n'&&cn1!='N'&&cn1!='y'&&cn1!='Y';)

{

   cout<<"您刚才输入的既不是“Y”也不是“N”!"<<endl;

   cout<<"您需要继续服务吗?(Y/N)"<<endl;

   cin>>cn1;

}

if(cn1=='y'||cn1=='Y')

{

   dis_menu();

   slect_menu();

   return;

}

if(cn1=='n'||cn1=='N')

{

   return;

}

}

Customer.h:

 

#ifndef CUSTOMER_H

#define CUSTOMER_H

class customer

{

   private:

      double customer_Num;

      int test;

      char Name[8];

      char ID[30];

      char Work_Group[80];

      char Tel_Num[20];

      char Address[60];

      char password[10];

      float Money;

   public:

      void save_money();

      void get_money();

      void change_money();

      void find_infor();

      friend void open_account();

      friend void save_money();

      friend void get_money();

      friend void change_money();

      friend void find_infor();

      friend void del_account();

};

#endif;

Accounter.cpp:

 

#include<iostream>

using namespace std;

#include "COUSTOMER.H"

void about();

void dis_menu()

{

      cout<<"******欢迎使用本程序******"<<endl;

      cout<<"1:新开帐户2:存款3:取款"<<endl;

      cout<<"4:转账 5:查询余额 6:注销帐户 7:退出系统"<<endl;

}

void slect_menu()

{

   cout<<"请选择您需要的服务:"<<endl;

   int choice;

   char a[80];

   for(;;)

   {

      gets(a);

      choice=atoi(a);

      if(choice<1||choice>8)

      {

         cout<<"对不起,您输入的选项不正确。"<<endl;

         cout<<"请选择您需要的服务(1--8):"<<endl;

      }

      else

         break;

   }

      switch(choice)

 

{

case 1:

   open_account();

   break;

case 2:

   ::save_money();

   break;

case 3:

   ::get_money();

   break;

case 4:

   ::change_money();

   break;

case 5:

   ::find_infor();

   break;

case 6:

   ::del_account();

   break;

case 7:

   cout<<"感谢您的使用,再见!"<<endl;

   return;

   break;

}

}

void main()//主函数

{

   dis_menu();

   slect_menu();

   return;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值